support real transparency for controls that return HasTransparentBackground() in wxDFB

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@47505 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Václav Slavík
2007-07-16 18:57:40 +00:00
parent 7dfe6f2a51
commit 92d912a2c9
2 changed files with 7 additions and 0 deletions

View 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 // FIXME_DFB: don't waste time rendering the area if it's fully covered
// by some children, go directly to rendering the children // by some children, go directly to rendering the children
// (unless some child has HasTransparentBackground()=true!)
// NB: unconditionally send wxEraseEvent, because our implementation of // NB: unconditionally send wxEraseEvent, because our implementation of
// wxWindow::Refresh() ignores the eraseBack argument // wxWindow::Refresh() ignores the eraseBack argument

View File

@@ -361,6 +361,11 @@ bool wxWindow::DoDrawBackground(wxDC& dc)
wxWindow * const parent = GetParent(); wxWindow * const parent = GetParent();
if ( HasTransparentBackground() && !UseBgCol() && parent ) 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() ); wxASSERT( !IsTopLevel() );
wxPoint pos = GetPosition(); wxPoint pos = GetPosition();
@@ -383,6 +388,7 @@ bool wxWindow::DoDrawBackground(wxDC& dc)
// Restore DC logical origin // Restore DC logical origin
dc.SetLogicalOrigin( org_x, org_y ); dc.SetLogicalOrigin( org_x, org_y );
#endif // !__WXDFB__
} }
else else
{ {