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;
}
#endif
{
#if wxUSE_UXTHEME
- // Special case for wxButton: 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);
-
- // for all other classes let them decide
- else if ((window != this) && window->CanApplyParentThemeBackground())
- {
- window->SetBackgroundColour(colour);
- }
+ window->ApplyParentThemeBackground(colour);
+
for ( wxWindowList::compatibility_iterator node = window->GetChildren().GetFirst(); node; node = node->GetNext() )
{
wxWindow *child = node->GetData();