X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/c3732409acc7a1e0b3cdb1f0a5dec7cc49a4b28b..97c153e44634a9b2b17614f85035205a0d9eaa46:/src/msw/statbox.cpp diff --git a/src/msw/statbox.cpp b/src/msw/statbox.cpp index beb2797300..e23f78abe1 100644 --- a/src/msw/statbox.cpp +++ b/src/msw/statbox.cpp @@ -42,6 +42,7 @@ #include "wx/dcmemory.h" #include "wx/msw/private.h" +#include "wx/msw/missing.h" // ---------------------------------------------------------------------------- // wxWin macros @@ -142,8 +143,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. + for ( wxWindow *win = GetParent(); win; win = win->GetParent() ) + { + if ( win->HasFlag(wxVSCROLL) || win->HasFlag(wxHSCROLL) ) + { + *exstyle = WS_EX_TRANSPARENT; + break; + } + + if ( win->IsTopLevel() ) + break; + } + } + return styleWin | BS_GROUPBOX; } @@ -306,7 +325,7 @@ void wxStaticBox::PaintBackground(wxDC& dc, const RECT& rc) // 3. this is backwards compatible behaviour and some people rely on it, // see http://groups.google.com/groups?selm=4252E932.3080801%40able.es wxWindow *parent = GetParent(); - HBRUSH hbr = (HBRUSH)parent->MSWGetBgBrush(dc.GetHDC(), this); + HBRUSH hbr = (HBRUSH)parent->MSWGetBgBrush(dc.GetHDC(), GetHWND()); // if there is no special brush for painting this control, just use the // solid background colour