]> git.saurik.com Git - wxWidgets.git/commitdiff
corrected bg colour inheritance once again: only immediate transparent children shoul...
authorVadim Zeitlin <vadim@wxwidgets.org>
Fri, 7 Jan 2005 20:06:28 +0000 (20:06 +0000)
committerVadim Zeitlin <vadim@wxwidgets.org>
Fri, 7 Jan 2005 20:06:28 +0000 (20:06 +0000)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@31284 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

src/msw/window.cpp

index b0f094f46fd46b146e18ada273cd528dc5ddb89c..e797f3fd618a30f730c240b71a519e8d5f6983fe 100644 (file)
@@ -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();
         }