From 75a2645e11fe191cc812cd768b61322456b5f8b8 Mon Sep 17 00:00:00 2001 From: Julian Smart Date: Sun, 10 Apr 2005 17:14:58 +0000 Subject: [PATCH] Hack to make wxStaticBox be repainted when inside a scrolling window git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@33477 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- src/msw/statbox.cpp | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/src/msw/statbox.cpp b/src/msw/statbox.cpp index beb2797300..da28e527ff 100644 --- a/src/msw/statbox.cpp +++ b/src/msw/statbox.cpp @@ -142,7 +142,26 @@ WXDWORD wxStaticBox::MSWGetStyle(long style, WXDWORD *exstyle) const styleWin &= ~WS_CLIPCHILDREN; if ( exstyle ) - *exstyle = 0; + { + // If any of the ancestors are scrolling windows, style has to be WS_EX_TRANSPARENT + // or the static box won't be painted when the window is scrolled. We try + // not to do this normally, because we get a lot of flicker. + wxWindow* p = GetParent(); + bool ancestorScrolls = false; + while (p && !p->IsTopLevel()) + { + if (p->HasFlag(wxVSCROLL) || GetParent()->HasFlag(wxHSCROLL)) + { + ancestorScrolls = true; + break; + } + p = p->GetParent(); + } + if (ancestorScrolls) + *exstyle = WS_EX_TRANSPARENT; + else + *exstyle = 0; + } return styleWin | BS_GROUPBOX; } -- 2.45.2