From cec46079aebd60314cdc9d1b633a7735770d4d68 Mon Sep 17 00:00:00 2001 From: Julian Smart Date: Sat, 17 Sep 2005 20:27:19 +0000 Subject: [PATCH] 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 --- src/msw/statbox.cpp | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/src/msw/statbox.cpp b/src/msw/statbox.cpp index 65bb2447bf..51e6acfdef 100644 --- a/src/msw/statbox.cpp +++ b/src/msw/statbox.cpp @@ -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);