From: Vadim Zeitlin Date: Thu, 18 Jun 2009 23:00:49 +0000 (+0000) Subject: erase background using the window background colour when using wxBG_STYLE_ERASE/SYSTEM X-Git-Url: https://git.saurik.com/wxWidgets.git/commitdiff_plain/6a5594e00d4e2010910711b9cbdae1b92cb88e4b?ds=inline erase background using the window background colour when using wxBG_STYLE_ERASE/SYSTEM git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@61125 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- diff --git a/src/osx/window_osx.cpp b/src/osx/window_osx.cpp index 50b3bc90e9..cb59ce7889 100644 --- a/src/osx/window_osx.cpp +++ b/src/osx/window_osx.cpp @@ -1755,27 +1755,44 @@ bool wxWindowMac::MacDoRedraw( long time ) // first send an erase event to the entire update area const wxBackgroundStyle bgStyle = GetBackgroundStyle(); - if ( bgStyle == wxBG_STYLE_ERASE ) - { - // for the toplevel window this really is the entire area - // for all the others only their client area, otherwise they - // might be drawing with full alpha and eg put blue into - // the grow-box area of a scrolled window (scroll sample) - wxWindowDC dc(this); - if ( IsTopLevel() ) - dc.SetDeviceClippingRegion(formerUpdateRgn); - else - dc.SetDeviceClippingRegion(clientUpdateRgn); - - wxEraseEvent eevent( GetId(), &dc ); - eevent.SetEventObject( this ); - if ( !ProcessWindowEvent( eevent ) ) - { - if ( bgStyle == wxBG_STYLE_SYSTEM && MacGetTopLevelWindow() ) + switch ( bgStyle ) + { + case wxBG_STYLE_ERASE: + case wxBG_STYLE_SYSTEM: { - dc.Clear(); + // for the toplevel window this really is the entire area for + // all the others only their client area, otherwise they might + // be drawing with full alpha and eg put blue into the grow-box + // area of a scrolled window (scroll sample) + wxWindowDC dc(this); + if ( IsTopLevel() ) + dc.SetDeviceClippingRegion(formerUpdateRgn); + else + dc.SetDeviceClippingRegion(clientUpdateRgn); + + if ( bgStyle == wxBG_STYLE_ERASE ) + { + wxEraseEvent eevent( GetId(), &dc ); + eevent.SetEventObject( this ); + if ( ProcessWindowEvent( eevent ) ) + break; + } + + if ( MacGetTopLevelWindow() ) + { + dc.SetBackground(GetBackgroundColour()); + dc.Clear(); + } } - } + break; + + case wxBG_STYLE_PAINT: + // nothing to do, user-defined EVT_PAINT handler will overwrite the + // entire window client area + break; + + default: + wxFAIL_MSG( "unsupported background style" ); } MacPaintGrowBox();