]> git.saurik.com Git - wxWidgets.git/blobdiff - src/msw/notebook.cpp
Added UpdateSize to wxSplitterWindow, to allow an app
[wxWidgets.git] / src / msw / notebook.cpp
index c027ef2d79af09c84a42a182cc1e02f063e5ca8f..e4cfd4c2a0b5c92b70e1da33b1d831ce29cf40d1 100644 (file)
@@ -946,9 +946,28 @@ wxColour wxNotebook::GetThemeBackgroundColour()
                                         hTheme,
                                         10 /* TABP_BODY */,
                                         1 /* NORMAL */,
-                                        3802 /* color of bg fill */,
+                                        3821 /* FILLCOLORHINT */,
                                         &themeColor);
-            
+
+            /*
+            [DS] Workaround for WindowBlinds:
+            Some themes return a near black theme color using FILLCOLORHINT,
+            this makes notebook pages have an ugly black background and makes
+            text (usually black) unreadable. Retry again with FILLCOLOR.
+
+            This workaround potentially breaks appearance of some themes,
+            but in practice it already fixes some themes.
+            */
+            if (themeColor == 1)
+            {
+                wxUxThemeEngine::Get()->GetThemeColor(
+                                            hTheme,
+                                            10 /* TABP_BODY */,
+                                            1 /* NORMAL */,
+                                            3802 /* FILLCOLOR */,
+                                            &themeColor);
+            }
+
             wxColour colour(GetRValue(themeColor), GetGValue(themeColor), GetBValue(themeColor));
             return colour;
         }
@@ -966,28 +985,9 @@ void wxNotebook::ApplyThemeBackground(wxWindow*, const wxColour&)
 #endif
 {
 #if wxUSE_UXTHEME
-    // Don't set the background for buttons since this will
-    // switch it into ownerdraw mode
-    if (window->IsKindOf(CLASSINFO(wxButton)) && !window->IsKindOf(CLASSINFO(wxBitmapButton)))
-        // This is essential, otherwise you'll see dark grey
-        // corners in the buttons.
-        ((wxButton*)window)->wxControl::SetBackgroundColour(colour);
-    else if (window->IsKindOf(CLASSINFO(wxStaticText)) ||
-             window->IsKindOf(CLASSINFO(wxStaticBox)) ||
-             window->IsKindOf(CLASSINFO(wxStaticLine)) ||
-             window->IsKindOf(CLASSINFO(wxRadioButton)) ||
-             window->IsKindOf(CLASSINFO(wxRadioBox)) ||
-             window->IsKindOf(CLASSINFO(wxCheckBox)) ||
-             window->IsKindOf(CLASSINFO(wxBitmapButton)) ||
-             window->IsKindOf(CLASSINFO(wxSlider)) ||
-             window->IsKindOf(CLASSINFO(wxPanel)) ||
-             (window->IsKindOf(CLASSINFO(wxNotebook)) && (window != this)) ||
-             window->IsKindOf(CLASSINFO(wxScrolledWindow))
-        )
-    {
-        window->SetBackgroundColour(colour);
-    }
 
+    window->ApplyParentThemeBackground(colour);
+    
     for ( wxWindowList::compatibility_iterator node = window->GetChildren().GetFirst(); node; node = node->GetNext() )
     {
         wxWindow *child = node->GetData();