X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/03d4194d6b4e2176a213c1fc8651454e3b9edcc8..6c2cd2a2116c5eff1646e0acb7cad2c887300300:/src/msw/spinctrl.cpp?ds=sidebyside diff --git a/src/msw/spinctrl.cpp b/src/msw/spinctrl.cpp index e5a4577acf..73fb437fc0 100644 --- a/src/msw/spinctrl.cpp +++ b/src/msw/spinctrl.cpp @@ -178,7 +178,7 @@ LRESULT APIENTRY _EXPORT wxBuddyTextWndProc(HWND hwnd, case WM_GETDLGCODE: // we want to get WXK_RETURN in order to generate the event for it - return DLGC_WANTCHARS; + return DLGC_WANTALLKEYS; } return ::CallWindowProc(CASTWNDPROC spin->GetBuddyWndProc(), @@ -205,7 +205,7 @@ wxSpinCtrl *wxSpinCtrl::GetSpinForTextCtrl(WXHWND hwndBuddy) // 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); @@ -301,6 +301,8 @@ bool wxSpinCtrl::Create(wxWindow *parent, 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 @@ -462,6 +464,8 @@ void wxSpinCtrl::SetValue(const wxString& text) void wxSpinCtrl::SetValue(int val) { + m_blockEvent = true; + wxSpinButton::SetValue(val); // normally setting the value of the spin button is enough as it updates @@ -477,6 +481,8 @@ void wxSpinCtrl::SetValue(int val) } m_oldValue = GetValue(); + + m_blockEvent = false; } int wxSpinCtrl::GetValue() const