Applied patch [ 1292827 ] [wxMSW] nested wxStaticBox fix

Jamie Gadd


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@35528 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Julian Smart 2005-09-17 20:27:19 +00:00
parent a749a99f08
commit cec46079ae

View File

@ -282,6 +282,7 @@ WXHRGN wxStaticBox::MSWGetRegionWithoutChildren()
RECT rc;
::GetWindowRect(GetHwnd(), &rc);
HRGN hrgn = ::CreateRectRgn(rc.left, rc.top, rc.right + 1, rc.bottom + 1);
bool foundThis = false;
// iterate over all child windows (not just wxWindows but all windows)
for ( HWND child = ::GetWindow(GetHwndOf(GetParent()), GW_CHILD);
@ -299,11 +300,18 @@ WXHRGN wxStaticBox::MSWGetRegionWithoutChildren()
str.UpperCase();
if ( str == wxT("BUTTON") && (style & BS_GROUPBOX) == BS_GROUPBOX )
{
// Don't clip any static boxes, not just this one. This will
// result in flicker in overlapping static boxes, but at least
// they will all be drawn correctly and we shouldn't have
// overlapping windows anyway.
continue;
if ( child == GetHwnd() )
foundThis = true;
// Any static boxes below this one in the Z-order can't be clipped
// since if we have the case where a static box with a low Z-order
// is nested inside another static box with a high Z-order then the
// nested static box would be painted over. Doing it this way
// unfortunately results in flicker if the Z-order of nested static
// boxes is not inside (lowest) to outside (highest) but at least
// they are still shown.
if ( foundThis )
continue;
}
::GetWindowRect(child, &rc);