Erase toolbar background even if it doesn't contain any controls/spaces.

Minor correction to changes in r62971: we still need to hook WM_ERASEBKGND in
toolbar parent when painting the toolbar itself even when there are no dummy
separators in it (and so we don't need to paint them over). Without this, the
background of simple toolbars without controls was not erased correctly.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@62980 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Vadim Zeitlin 2009-12-23 21:42:06 +00:00
parent fe0c328904
commit f3d0bc4364

View File

@ -1744,18 +1744,15 @@ bool wxToolBar::HandlePaint(WXWPARAM wParam, WXLPARAM lParam)
}
}
if ( !rgnDummySeps.IsOk() )
if ( rgnDummySeps.IsOk() )
{
// don't interfere with toolbar default painting at all if we don't
// need to -- and we don't if we have no dummy separators at all
return false;
}
// exclude the area occupied by the controls and stretchable spaces from
// the update region to prevent the toolbar from drawing separators in it
if ( !::ValidateRgn(GetHwnd(), GetHrgnOf(rgnDummySeps)) )
{
wxLogLastError(wxT("ValidateRgn()"));
// exclude the area occupied by the controls and stretchable spaces
// from the update region to prevent the toolbar from drawing
// separators in it
if ( !::ValidateRgn(GetHwnd(), GetHrgnOf(rgnDummySeps)) )
{
wxLogLastError(wxT("ValidateRgn()"));
}
}
// still let the native control draw everything else normally but set up a
@ -1779,11 +1776,14 @@ bool wxToolBar::HandlePaint(WXWPARAM wParam, WXLPARAM lParam)
GetParent()->MSWSetEraseBgHook(NULL);
// erase the dummy separators region ourselves now as nobody painted over
// them
WindowHDC hdc(GetHwnd());
::SelectClipRgn(hdc, GetHrgnOf(rgnDummySeps));
MSWDoEraseBackground(hdc);
if ( rgnDummySeps.IsOk() )
{
// erase the dummy separators region ourselves now as nobody painted
// over them
WindowHDC hdc(GetHwnd());
::SelectClipRgn(hdc, GetHrgnOf(rgnDummySeps));
MSWDoEraseBackground(hdc);
}
return true;
}