]> git.saurik.com Git - wxWidgets.git/blobdiff - src/msw/spinctrl.cpp
Add a SetDoubleBuffered method for wxMSW (XP+)
[wxWidgets.git] / src / msw / spinctrl.cpp
index e5a4577acf519d81798d8491430f4f87054eabe8..73fb437fc071edef1f39925c6f800dd5746995c2 100644 (file)
@@ -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