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;
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()
#if wxUSE_UXTHEME
m_hbrBackground = NULL;
#endif // wxUSE_UXTHEME
+
+#if USE_NOTEBOOK_ANTIFLICKER
+ m_hasSubclassedUpdown = false;
+#endif // USE_NOTEBOOK_ANTIFLICKER
}
// default for dynamic class
#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);
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;
}
}