]> git.saurik.com Git - wxWidgets.git/commitdiff
subclass all updown controls in notebooks, not just the first one
authorVadim Zeitlin <vadim@wxwidgets.org>
Tue, 24 May 2005 19:18:15 +0000 (19:18 +0000)
committerVadim Zeitlin <vadim@wxwidgets.org>
Tue, 24 May 2005 19:18:15 +0000 (19:18 +0000)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@34320 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

include/wx/msw/notebook.h
src/msw/notebook.cpp

index 90c0fc7b813ab3f3a951fa9b92532e99659fadf5..483eecbeb2af750d4f6e138233685ea03e77a8fb 100644 (file)
@@ -222,6 +222,16 @@ protected:
   bool DoDrawBackground(WXHDC hDC, wxWindow *child = NULL);
 #endif // wxUSE_UXTHEME
 
+  // these function are only used for reducing flicker on notebook resize and
+  // we don't need to do this for WinCE
+#ifndef __WXWINCE__
+  void OnEraseBackground(wxEraseEvent& event);
+  void OnPaint(wxPaintEvent& event);
+
+  // true if we have already subclassed our updown control
+  bool m_hasSubclassedUpdown;
+#endif // __WXWINCE__
+
   // the current selection (-1 if none)
   int m_nSelection;
 
@@ -232,11 +242,6 @@ protected:
   WXHBRUSH m_hbrBackground;
 #endif // wxUSE_UXTHEME
 
-  // No need to optimize for WinCE
-#ifndef __WXWINCE__
-  void OnEraseBackground(wxEraseEvent& event);
-  void OnPaint(wxPaintEvent& event);
-#endif
 
   DECLARE_DYNAMIC_CLASS_NO_COPY(wxNotebook)
   DECLARE_EVENT_TABLE()
index f5aa19e9838b0700aa05aef6908cf1c5ea2474bd..8fb74d7e20d8cccc86dfc1f1951fc7ce18cb5457 100644 (file)
@@ -229,6 +229,10 @@ void wxNotebook::Init()
 #if wxUSE_UXTHEME
   m_hbrBackground = NULL;
 #endif // wxUSE_UXTHEME
+
+#if USE_NOTEBOOK_ANTIFLICKER
+  m_hasSubclassedUpdown = false;
+#endif // USE_NOTEBOOK_ANTIFLICKER
 }
 
 // default for dynamic class
@@ -921,7 +925,7 @@ void wxNotebook::OnSize(wxSizeEvent& event)
 #if USE_NOTEBOOK_ANTIFLICKER
     // subclass the spin control used by the notebook to scroll pages to
     // prevent it from flickering on resize
-    if ( !gs_wndprocNotebookSpinBtn )
+    if ( !m_hasSubclassedUpdown )
     {
         // iterate over all child windows to find spin button
         for ( HWND child = ::GetWindow(GetHwnd(), GW_CHILD);
@@ -935,9 +939,11 @@ void wxNotebook::OnSize(wxSizeEvent& event)
             if ( !childWindow )
             {
                 // subclass the spin button to override WM_ERASEBKGND
-                gs_wndprocNotebookSpinBtn = (WXFARPROC)wxGetWindowProc(child);
+                if ( !gs_wndprocNotebookSpinBtn )
+                    gs_wndprocNotebookSpinBtn = (WXFARPROC)wxGetWindowProc(child);
 
                 wxSetWindowProc(child, wxNotebookSpinBtnWndProc);
+                m_hasSubclassedUpdown = true;
                 break;
             }
         }