]> git.saurik.com Git - wxWidgets.git/commitdiff
support real transparency for controls that return HasTransparentBackground() in...
authorVáclav Slavík <vslavik@fastmail.fm>
Mon, 16 Jul 2007 18:57:40 +0000 (18:57 +0000)
committerVáclav Slavík <vslavik@fastmail.fm>
Mon, 16 Jul 2007 18:57:40 +0000 (18:57 +0000)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@47505 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

src/dfb/window.cpp
src/univ/winuniv.cpp

index f82ffb8ed60ecb344ba970291cd8f6bf10a93e52..9e33f696c7773cccabc2795328877d36d7e4f756 100644 (file)
@@ -675,6 +675,7 @@ void wxWindowDFB::PaintWindow(const wxRect& rect)
 
     // FIXME_DFB: don't waste time rendering the area if it's fully covered
     //            by some children, go directly to rendering the children
+    //            (unless some child has HasTransparentBackground()=true!)
 
     // NB: unconditionally send wxEraseEvent, because our implementation of
     //     wxWindow::Refresh() ignores the eraseBack argument
index 90bb87c58f2780dc5dc4e3c3cae36d0d88fa8053..2e3dbcd8443a4abc6901c2eebf802131460dbf63 100644 (file)
@@ -361,6 +361,11 @@ bool wxWindow::DoDrawBackground(wxDC& dc)
     wxWindow * const parent = GetParent();
     if ( HasTransparentBackground() && !UseBgCol() && parent )
     {
+        // DirectFB paints the parent first, then its child windows, so by
+        // the time this code is called, parent's background was already
+        // drawn and there's no point in (imperfectly!) duplicating the work
+        // here:
+#ifndef __WXDFB__
         wxASSERT( !IsTopLevel() );
 
         wxPoint pos = GetPosition();
@@ -383,6 +388,7 @@ bool wxWindow::DoDrawBackground(wxDC& dc)
 
         // Restore DC logical origin
         dc.SetLogicalOrigin( org_x, org_y );
+#endif // !__WXDFB__
     }
     else
     {