]> git.saurik.com Git - wxWidgets.git/commitdiff
Hack wxMSW wxNotebook to show the text controls correctly initially.
authorVadim Zeitlin <vadim@wxwidgets.org>
Tue, 22 Nov 2011 13:18:45 +0000 (13:18 +0000)
committerVadim Zeitlin <vadim@wxwidgets.org>
Tue, 22 Nov 2011 13:18:45 +0000 (13:18 +0000)
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

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

index bb8ca64cc2d870ba31d37cad14c08a860c4f1911..a62f72f6b0fd305d0c91143f57376bea529c0fc3 100644 (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
index e69fd60c43b2859307031a05f0e2798971e88edc..5990c012bc29b541bcc49c00cf9dccc0dd7cb36f 100644 (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();