Hack wxMSW wxNotebook to show the text controls correctly initially.

Add an Update() call to ensure that text controls in the initially selected
notebook page are shown correctly. It's almost certainly not the right fix for
the real bug that results in text controls not being shown when the notebook
comes up but it doesn't cost much and at least allows us to get correct
appearance for the themed notebooks.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@69793 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Vadim Zeitlin 2011-11-22 13:18:45 +00:00
parent b0162e3274
commit feb32e3165
2 changed files with 19 additions and 0 deletions

View File

@ -194,6 +194,9 @@ protected:
// true if we have already subclassed our updown control
bool m_hasSubclassedUpdown;
// true if we already refreshed the current page after showing the window
bool m_doneUpdateHack;
#endif // __WXWINCE__
#if wxUSE_UXTHEME

View File

@ -144,6 +144,7 @@ void wxNotebook::Init()
#if USE_NOTEBOOK_ANTIFLICKER
m_hasSubclassedUpdown = false;
m_doneUpdateHack = false;
#endif // USE_NOTEBOOK_ANTIFLICKER
}
@ -978,6 +979,21 @@ void wxNotebook::OnSize(wxSizeEvent& event)
}
}
}
// Probably because of the games we play above to avoid flicker sometimes
// the text controls inside notebook pages are not shown correctly (they
// don't have their borders) when the notebook is shown for the first time.
// It's not really clear why does this happen and maybe the bug is in
// wxTextCtrl itself and not here but updating the page when it's about to
// be shown doesn't cost much and works around the problem so do it here
// for now.
if ( !m_doneUpdateHack && IsShownOnScreen() )
{
m_doneUpdateHack = true;
wxWindow* const page = GetCurrentPage();
if ( page )
page->Update();
}
#endif // USE_NOTEBOOK_ANTIFLICKER
event.Skip();