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
This commit is contained in:
parent
c22ace4dff
commit
6a5594e00d
@ -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 )
|
||||
switch ( bgStyle )
|
||||
{
|
||||
// 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)
|
||||
case wxBG_STYLE_ERASE:
|
||||
case wxBG_STYLE_SYSTEM:
|
||||
{
|
||||
// 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 ) )
|
||||
{
|
||||
if ( bgStyle == wxBG_STYLE_SYSTEM && MacGetTopLevelWindow() )
|
||||
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();
|
||||
|
Loading…
Reference in New Issue
Block a user