]> git.saurik.com Git - wxWidgets.git/blobdiff - src/msw/spinbutt.cpp
applied (slightly modified) wxToggleButton patch from John Norris and Axel Schlueter
[wxWidgets.git] / src / msw / spinbutt.cpp
index 51a32f9814e39f6302901224a97b08340a11bb1b..03428c16ee3a8ada3d7a41904846304c5e81e7c6 100644 (file)
@@ -19,6 +19,7 @@
 
 #ifdef __GNUG__
     #pragma implementation "spinbutt.h"
+    #pragma implementation "spinbutbase.h"
 #endif
 
 // For compilers that support precompilation, includes "wx.h".
 // Can't resolve reference to CreateUpDownControl in
 // TWIN32, but could probably use normal CreateWindow instead.
 
-#if defined(__WIN95__) && !defined(__TWIN32__)
+#if wxUSE_SPINBTN
 
 #include "wx/spinbutt.h"
+
+IMPLEMENT_DYNAMIC_CLASS(wxSpinEvent, wxNotifyEvent)
+
+#if defined(__WIN95__) && !defined(__TWIN32__)
+
 #include "wx/msw/private.h"
 
-#if !defined(__GNUWIN32__) || defined(__TWIN32__) || defined(wxUSE_NORLANDER_HEADERS)
+#if defined(__WIN95__) && !(defined(__GNUWIN32_OLD__) || defined(__TWIN32__))
     #include <commctrl.h>
 #endif
 
 // wxWin macros
 // ----------------------------------------------------------------------------
 
-#if !USE_SHARED_LIBRARY
-    IMPLEMENT_DYNAMIC_CLASS(wxSpinButton, wxControl)
-    IMPLEMENT_DYNAMIC_CLASS(wxSpinEvent, wxScrollEvent);
-#endif
+IMPLEMENT_DYNAMIC_CLASS(wxSpinButton, wxControl)
 
 // ----------------------------------------------------------------------------
 // wxSpinButton
@@ -103,8 +106,9 @@ bool wxSpinButton::Create(wxWindow *parent,
         y = 0;
 
     // translate the styles
-    DWORD wstyle = WS_VISIBLE | WS_CHILD | WS_TABSTOP |
-                   UDS_SETBUDDYINT; // it doesn't harm if we don't have buddy
+    DWORD wstyle = WS_VISIBLE | WS_CHILD | WS_TABSTOP | /*  WS_CLIPSIBLINGS | */
+                   UDS_NOTHOUSANDS | // never useful, sometimes harmful
+                   UDS_SETBUDDYINT;  // it doesn't harm if we don't have buddy
 
     if ( m_windowStyle & wxSP_HORIZONTAL )
         wstyle |= UDS_HORZ;
@@ -128,7 +132,7 @@ bool wxSpinButton::Create(wxWindow *parent,
 
     if ( !m_hWnd )
     {
-        wxLogLastError("CreateUpDownControl");
+        wxLogLastError(wxT("CreateUpDownControl"));
 
         return FALSE;
     }
@@ -151,7 +155,7 @@ wxSpinButton::~wxSpinButton()
 // size calculation
 // ----------------------------------------------------------------------------
 
-wxSize wxSpinButton::DoGetBestSize()
+wxSize wxSpinButton::DoGetBestSize() const
 {
     if ( (GetWindowStyle() & wxSP_VERTICAL) != 0 )
     {
@@ -217,6 +221,9 @@ bool wxSpinButton::MSWOnNotify(int idCtrl, WXLPARAM lParam, WXLPARAM *result)
     LPNMUPDOWN lpnmud = (LPNMUPDOWN)lParam;
 #endif
 
+    if (lpnmud->hdr.hwndFrom != GetHwnd()) // make sure it is the right control
+        return FALSE;
+
     wxSpinEvent event(lpnmud->iDelta > 0 ? wxEVT_SCROLL_LINEUP
                                          : wxEVT_SCROLL_LINEDOWN,
                       m_windowId);
@@ -240,3 +247,7 @@ bool wxSpinButton::MSWCommand(WXUINT cmd, WXWORD id)
 }
 
 #endif // __WIN95__
+
+#endif
+    // wxUSE_SPINCTN
+