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
This commit is contained in:
parent
7af99268d4
commit
5554336399
@ -358,28 +358,41 @@ WXHBRUSH wxControl::MSWControlColor(WXHDC pDC)
|
|||||||
|
|
||||||
::SetBkMode((HDC)pDC, TRANSPARENT);
|
::SetBkMode((HDC)pDC, TRANSPARENT);
|
||||||
|
|
||||||
#if wxUSE_UXTHEME && wxUSE_NOTEBOOK
|
// check if we should adapt our background to our parent
|
||||||
if ( wxUxThemeEngine::GetIfActive() )
|
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;
|
||||||
// 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);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
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
|
// let the control deal with background itself
|
||||||
return MSWGetDefaultBgBrush();
|
return MSWGetDefaultBgBrush();
|
||||||
|
Loading…
Reference in New Issue
Block a user