X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/1f6420d83ad1f42a78813da64b04a15c5f2a9b2c..96c9640205933ad0673d5af2c96af0816c50160c:/src/msw/notebook.cpp diff --git a/src/msw/notebook.cpp b/src/msw/notebook.cpp index ea0df3addf..5990c012bc 100644 --- a/src/msw/notebook.cpp +++ b/src/msw/notebook.cpp @@ -138,14 +138,13 @@ END_EVENT_TABLE() // common part of all ctors void wxNotebook::Init() { - m_imageList = NULL; - #if wxUSE_UXTHEME m_hbrBackground = NULL; #endif // wxUSE_UXTHEME #if USE_NOTEBOOK_ANTIFLICKER m_hasSubclassedUpdown = false; + m_doneUpdateHack = false; #endif // USE_NOTEBOOK_ANTIFLICKER } @@ -980,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(); @@ -1146,28 +1160,6 @@ void wxNotebook::UpdateBgBrush() } } -WXHBRUSH wxNotebook::MSWGetBgBrushForChild(WXHDC hDC, wxWindow *child) -{ - if ( m_hbrBackground ) - { - // before drawing with the background brush, we need to position it - // correctly - RECT rc; - ::GetWindowRect(GetHwndOf(child), &rc); - - ::MapWindowPoints(NULL, GetHwnd(), (POINT *)&rc, 1); - - if ( !::SetBrushOrgEx((HDC)hDC, -rc.left, -rc.top, NULL) ) - { - wxLogLastError(wxT("SetBrushOrgEx(notebook bg brush)")); - } - - return m_hbrBackground; - } - - return wxNotebookBase::MSWGetBgBrushForChild(hDC, child); -} - bool wxNotebook::MSWPrintChild(WXHDC hDC, wxWindow *child) { // solid background colour overrides themed background drawing @@ -1336,10 +1328,12 @@ bool wxNotebook::MSWOnNotify(int idCtrl, WXLPARAM lParam, WXLPARAM* result) event.SetEventObject(this); event.SetInt(idCtrl); - bool processed = HandleWindowEvent(event); + // Change the selection before generating the event as its handler should + // already see the new page selected. if ( hdr->code == TCN_SELCHANGE ) UpdateSelection(event.GetSelection()); + bool processed = HandleWindowEvent(event); *result = !event.IsAllowed(); return processed; }