WXHWND m_hwndBuddy;
WXFARPROC m_wndProcBuddy;
+ // Block text update event after SetValue()
+ bool m_blockEvent;
+
// all existing wxSpinCtrls - this allows to find the one corresponding to
// the given buddy window in GetSpinForTextCtrl()
static wxArraySpins ms_allSpins;
// process a WM_COMMAND generated by the buddy text control
bool wxSpinCtrl::ProcessTextCommand(WXWORD cmd, WXWORD WXUNUSED(id))
{
- if ( cmd == EN_CHANGE )
+ if ( (cmd == EN_CHANGE) && (!m_blockEvent ))
{
wxCommandEvent event(wxEVT_COMMAND_TEXT_UPDATED, GetId());
event.SetEventObject(this);
int min, int max, int initial,
const wxString& name)
{
+ m_blockEvent = false;
+
// this should be in ctor/init function but I don't want to add one to 2.8
// to avoid problems with default ctor which can be inlined in the user
// code and so might not get this fix without recompilation
void wxSpinCtrl::SetValue(int val)
{
+ m_blockEvent = true;
+
wxSpinButton::SetValue(val);
// normally setting the value of the spin button is enough as it updates
}
m_oldValue = GetValue();
+
+ m_blockEvent = false;
}
int wxSpinCtrl::GetValue() const