From 8d075f8d8698465d07ecd9feadd3d8f5984d2a8e Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Fri, 7 Jan 2005 20:06:28 +0000 Subject: [PATCH] corrected bg colour inheritance once again: only immediate transparent children should inherit non inheritable parent bg colour git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@31284 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- src/msw/window.cpp | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) diff --git a/src/msw/window.cpp b/src/msw/window.cpp index b0f094f46f..e797f3fd61 100644 --- a/src/msw/window.cpp +++ b/src/msw/window.cpp @@ -1533,13 +1533,7 @@ void wxWindowMSW::DoMoveWindow(int x, int y, int width, int height) height = 0; // if our parent had prepared a defer window handle for us, use it - wxWindowMSW *parent = -#ifdef __WXUNIVERSAL__ - wxDynamicCast(m_parent, wxWindowMSW) -#else - m_parent -#endif - ; + wxWindowMSW *parent = GetParent(); HDWP hdwp = parent ? (HDWP)parent->m_hDWP : NULL; if ( hdwp ) { @@ -2304,8 +2298,6 @@ WXLRESULT wxWindowMSW::MSWWindowProc(WXUINT message, WXWPARAM wParam, WXLPARAM l { wxLogLastError(_T("EndDeferWindowPos")); } - - m_hDWP = NULL; } break; #endif // __SMARTPHONE__ @@ -4141,9 +4133,16 @@ wxColour wxWindowMSW::MSWGetBgColourForChild(wxWindow *child) { if ( m_hasBgCol ) { + // our background colour applies to: + // 1. this window itself, always + // 2. all children unless the colour is "not inheritable" + // 3. immediate transparent children which should show the same + // background as we do, but not for transparent grandchildren + // which use the background of their immediate parent instead if ( m_inheritBgCol || child == this || - child->HasTransparentBackground() ) + (child->HasTransparentBackground() && + child->GetParent() == this) ) { return GetBackgroundColour(); } -- 2.45.2