subclass all updown controls in notebooks, not just the first one
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@34320 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -222,6 +222,16 @@ protected:
|
|||||||
bool DoDrawBackground(WXHDC hDC, wxWindow *child = NULL);
|
bool DoDrawBackground(WXHDC hDC, wxWindow *child = NULL);
|
||||||
#endif // wxUSE_UXTHEME
|
#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)
|
// the current selection (-1 if none)
|
||||||
int m_nSelection;
|
int m_nSelection;
|
||||||
|
|
||||||
@@ -232,11 +242,6 @@ protected:
|
|||||||
WXHBRUSH m_hbrBackground;
|
WXHBRUSH m_hbrBackground;
|
||||||
#endif // wxUSE_UXTHEME
|
#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_DYNAMIC_CLASS_NO_COPY(wxNotebook)
|
||||||
DECLARE_EVENT_TABLE()
|
DECLARE_EVENT_TABLE()
|
||||||
|
@@ -229,6 +229,10 @@ void wxNotebook::Init()
|
|||||||
#if wxUSE_UXTHEME
|
#if wxUSE_UXTHEME
|
||||||
m_hbrBackground = NULL;
|
m_hbrBackground = NULL;
|
||||||
#endif // wxUSE_UXTHEME
|
#endif // wxUSE_UXTHEME
|
||||||
|
|
||||||
|
#if USE_NOTEBOOK_ANTIFLICKER
|
||||||
|
m_hasSubclassedUpdown = false;
|
||||||
|
#endif // USE_NOTEBOOK_ANTIFLICKER
|
||||||
}
|
}
|
||||||
|
|
||||||
// default for dynamic class
|
// default for dynamic class
|
||||||
@@ -921,7 +925,7 @@ void wxNotebook::OnSize(wxSizeEvent& event)
|
|||||||
#if USE_NOTEBOOK_ANTIFLICKER
|
#if USE_NOTEBOOK_ANTIFLICKER
|
||||||
// subclass the spin control used by the notebook to scroll pages to
|
// subclass the spin control used by the notebook to scroll pages to
|
||||||
// prevent it from flickering on resize
|
// prevent it from flickering on resize
|
||||||
if ( !gs_wndprocNotebookSpinBtn )
|
if ( !m_hasSubclassedUpdown )
|
||||||
{
|
{
|
||||||
// iterate over all child windows to find spin button
|
// iterate over all child windows to find spin button
|
||||||
for ( HWND child = ::GetWindow(GetHwnd(), GW_CHILD);
|
for ( HWND child = ::GetWindow(GetHwnd(), GW_CHILD);
|
||||||
@@ -935,9 +939,11 @@ void wxNotebook::OnSize(wxSizeEvent& event)
|
|||||||
if ( !childWindow )
|
if ( !childWindow )
|
||||||
{
|
{
|
||||||
// subclass the spin button to override WM_ERASEBKGND
|
// subclass the spin button to override WM_ERASEBKGND
|
||||||
gs_wndprocNotebookSpinBtn = (WXFARPROC)wxGetWindowProc(child);
|
if ( !gs_wndprocNotebookSpinBtn )
|
||||||
|
gs_wndprocNotebookSpinBtn = (WXFARPROC)wxGetWindowProc(child);
|
||||||
|
|
||||||
wxSetWindowProc(child, wxNotebookSpinBtnWndProc);
|
wxSetWindowProc(child, wxNotebookSpinBtnWndProc);
|
||||||
|
m_hasSubclassedUpdown = true;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user