wxEVENT_PROPERTY( PageChanged , wxEVT_COMMAND_NOTEBOOK_PAGE_CHANGED , wxNotebookEvent )
wxPROPERTY_COLLECTION( PageInfos , wxNotebookPageInfoList , wxNotebookPageInfo* , AddPageInfo , GetPageInfos , 0 /*flags*/ , wxT("Helpstring") , wxT("group"))
- wxPROPERTY_FLAGS( WindowStyle , wxNotebookStyle , long , SetWindowStyleFlag , GetWindowStyleFlag , , 0 /*flags*/ , wxT("Helpstring") , wxT("group")) // style
+ wxPROPERTY_FLAGS( WindowStyle , wxNotebookStyle , long , SetWindowStyleFlag , GetWindowStyleFlag , EMPTY_MACROVALUE , 0 /*flags*/ , wxT("Helpstring") , wxT("group")) // style
wxEND_PROPERTIES_TABLE()
wxBEGIN_HANDLERS_TABLE(wxNotebook)
wxBEGIN_PROPERTIES_TABLE(wxNotebookPageInfo)
- wxREADONLY_PROPERTY( Page , wxNotebookPage* , GetPage , , 0 /*flags*/ , wxT("Helpstring") , wxT("group"))
+ wxREADONLY_PROPERTY( Page , wxNotebookPage* , GetPage , EMPTY_MACROVALUE , 0 /*flags*/ , wxT("Helpstring") , wxT("group"))
wxREADONLY_PROPERTY( Text , wxString , GetText , wxString() , 0 /*flags*/ , wxT("Helpstring") , wxT("group"))
wxREADONLY_PROPERTY( Selected , bool , GetSelected , false, 0 /*flags*/ , wxT("Helpstring") , wxT("group") )
wxREADONLY_PROPERTY( ImageId , int , GetImageId , -1 , 0 /*flags*/ , wxT("Helpstring") , wxT("group"))
// This is total guesswork.
// See PlatformSDK\Include\Tmschema.h for values
COLORREF themeColor;
- wxUxThemeEngine::Get()->GetThemeColor
- (
+ wxUxThemeEngine::Get()->GetThemeColor(
hTheme,
10 /* TABP_BODY */,
1 /* NORMAL */,
- 3821, /* FILLCOLORHINT */
- & themeColor
- );
-
+ 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
- // 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();
}
#if wxUSE_UXTHEME
-long wxNotebook::MSWWindowProc(WXUINT nMsg, WXWPARAM wParam, WXLPARAM lParam)
+WXLRESULT wxNotebook::MSWWindowProc(WXUINT nMsg, WXWPARAM wParam, WXLPARAM lParam)
{
static bool g_TestedForTheme = false;
static bool g_supportsThemes = false;