From 55543363999a9fae0e2b7af98100cf494839bb03 Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Sun, 12 Dec 2004 20:21:16 +0000 Subject: [PATCH] check for any parent with non default background in wxControl::MSWControlColor(), not just wxNotebook git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@30971 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- src/msw/control.cpp | 49 ++++++++++++++++++++++++++++----------------- 1 file changed, 31 insertions(+), 18 deletions(-) diff --git a/src/msw/control.cpp b/src/msw/control.cpp index 7dc54a5114..304829225a 100644 --- a/src/msw/control.cpp +++ b/src/msw/control.cpp @@ -358,28 +358,41 @@ WXHBRUSH wxControl::MSWControlColor(WXHDC pDC) ::SetBkMode((HDC)pDC, TRANSPARENT); -#if wxUSE_UXTHEME && wxUSE_NOTEBOOK - if ( wxUxThemeEngine::GetIfActive() ) + // check if we should adapt our background to our parent + for ( wxWindow *win = this; win; win = win->GetParent() ) { - for ( wxWindow *win = this; win; win = win->GetParent() ) + if ( win->IsTopLevel() ) { - if ( win->IsTopLevel() ) - { - // don't go beyond the first top level parent - break; - } - - wxNotebook *nbook = wxDynamicCast(win, wxNotebook); - if ( nbook ) - { - // return value may be NULL but it is ok: if the first parent - // notebook doesn't use themes, then we don't have to process - // this message at all, so let default processing take place - return nbook->GetThemeBackgroundBrush(pDC, this); - } + // don't go beyond the first top level parent + break; } + + if ( win->GetBackgroundStyle() == wxBG_STYLE_COLOUR ) + { + // parent window has solid colour, so it doesn't look + // transparent and hence we shouldn't show notebook background + wxBrush *brush = wxTheBrushList->FindOrCreateBrush + ( + win->GetBackgroundColour(), + wxSOLID + ); + + return (WXHBRUSH)brush->GetResourceHandle(); + } + +#if wxUSE_UXTHEME && wxUSE_NOTEBOOK + // check for the special case of the notebooks which draw themed + // background when themes are enabled + wxNotebook *nbook = wxDynamicCast(win, wxNotebook); + if ( nbook ) + { + // return value may be NULL but it is ok: if the first parent + // notebook doesn't use themes, then we don't have to process + // this message at all, so let default processing take place + return nbook->GetThemeBackgroundBrush(pDC, this); + } +#endif // wxUSE_UXTHEME && wxUSE_NOTEBOOK } -#endif // wxUSE_UXTHEME // let the control deal with background itself return MSWGetDefaultBgBrush();