Revert "Restore the use of WS_EX_COMPOSITED by default" This reverts commit ccaf5728f66ac0710c2deaa0ce0def14bf1b11cb.
Revert "Disable use of composition for top most windows" This reverts commit b4dd25ee3f6033126030821d7e8d30d4076d23ac.
Revert "Fix wxStaticBox drawing after disabling composition for parent" This reverts commit 6f5703a885067464e1d4f5649f9b8eaf0e465304.
Revert "Force wxFULL_REPAINT_ON_RESIZE for windows using WS_EX_COMPOSITED" This reverts commit a4ebfbb7739dfee8cf4d3d90c64417afd4de8720.
Revert "Don't try to clear WS_EX_COMPOSITED for TLWs" This reverts commit 3259d1e2d949e4d155fe4adeba834bd73458f048.
Revert "Add msw.window.no-composited system option" This reverts commit d9734baed562794858228bedf2df4e91aa2f9ca3.
Revert "Document WS_EX_COMPOSITED impact on wxClientDC" This reverts commit b0ed71658dd4ec39094e1ff2990d0e6bc88311b6.
Revert "Disable use of composition in forty demo under MSW" This reverts commit 3a7394fe088dc65e244355a17406aea93c74017d.
Revert "Disable compositing when using wxDragImage" This reverts commit 9261816febbbaf089842578bc4f6f2c81c472c31.
Revert "Enable double buffering for all generic windows in wxMSW" This reverts commit cd15602378a83f1c05deb930c7a4243a0ace289e.
Revert "samples/mfc: disable composition to allow wxClientDC to work" This reverts commit 6ab144f9bf2c329e8d105e7461f8d2d48c6cb7a6.
Remove now unnecessary calls to MSWDisableComposited() Still keep the function itself for compatibility and because it might conceivably be still helpful e.g. after calling SetDoubleBuffered().
Reset wxALWAYS_NATIVE_DOUBLE_BUFFER to 0 for wxMSW This reverts fcc7430610ca202b744df75dc3d7e471a1e8b8a4.
Revert "Fix wxDateTimePickerCtrl arrows redrawing with WS_EX_COMPOSITED" This reverts commit ed7f5a671cd055f63e310daa5e76efb07ac63e7c.
Don't draw wxSpinButton manually in light mode This was only necessary when using WS_EX_COMPOSITED which is not used any more. This reverts 79567c83f4263df2860b0c4da38d91da834c1aab.
Fix compilation error in non-wxQt ports in wxSlider tests Fix error in the last commit and also emit a warning when using Qt 6.8.
Merge branch 'msw-drop-compositing' Don't enable WS_EX_COMPOSITED by default in wxMSW any longer. Closes #25025. Closes #25797. See #25808.
... | ... | @@ -34,15 +34,6 @@ FortyCanvas::FortyCanvas(wxWindow* parent, const wxPoint& pos, const wxSize& siz |
34 | 34 | m_playerDialog(0),
|
35 | 35 | m_leftBtnDown(false)
|
36 | 36 | {
|
37 | -#ifdef __WXMSW__
|
|
38 | - // Unfortunately the redraw logic here is incompatible with double
|
|
39 | - // buffering under MSW, so we have to disable it. The proper solution would
|
|
40 | - // be to rewrite this logic, as this is also required to make it work under
|
|
41 | - // GTK/Wayland and macOS, where the game currently doesn't update its
|
|
42 | - // display at all.
|
|
43 | - MSWDisableComposited();
|
|
44 | -#endif
|
|
45 | - |
|
46 | 37 | SetScrollbars(0, 0, 0, 0);
|
47 | 38 | |
48 | 39 | #ifdef __WXGTK__
|
... | ... | @@ -11,19 +11,6 @@ INCOMPATIBLE CHANGES SINCE 3.2.x: |
11 | 11 | Changes in behaviour not resulting in compilation errors
|
12 | 12 | --------------------------------------------------------
|
13 | 13 | |
14 | -- wxMSW now uses double buffering by default, meaning that updating the
|
|
15 | - windows using wxClientDC doesn't work any longer, which is consistent with
|
|
16 | - the behaviour of wxGTK with Wayland backend and of wxOSX, but not with the
|
|
17 | - traditional historic behaviour of wxMSW (or wxGTK/X11). You may call
|
|
18 | - MSWDisableComposited() to restore the previous behaviour, however it is
|
|
19 | - strongly recommended to change your redrawing logic to avoid using wxClientDC
|
|
20 | - instead, as the code using it still won't work with wxGTK/wxOSX.
|
|
21 | - |
|
22 | - You may also choose to globally set the new msw.window.no-composited system
|
|
23 | - option to disable the use of double buffering, but please consider doing it
|
|
24 | - only as a last resort and/or temporary solution, as this _will_ result in
|
|
25 | - flicker and won't be supported at all in the future wxWidgets versions.
|
|
26 | - |
|
27 | 14 | - wxMSW doesn't support versions of Microsoft Windows before Windows 7. If you
|
28 | 15 | need Windows XP or Vista support, please use wxWidgets 3.2.
|
29 | 16 |
... | ... | @@ -15,9 +15,12 @@ |
15 | 15 | #include "wx/dcclient.h"
|
16 | 16 | #include "wx/window.h"
|
17 | 17 | |
18 | -// All current ports use double buffering.
|
|
19 | -#define wxALWAYS_NATIVE_DOUBLE_BUFFER 1
|
|
20 | - |
|
18 | +// Only wxMSW doesn't use double buffering.
|
|
19 | +#ifdef __WXMSW__
|
|
20 | + #define wxALWAYS_NATIVE_DOUBLE_BUFFER 0
|
|
21 | +#else
|
|
22 | + #define wxALWAYS_NATIVE_DOUBLE_BUFFER 1
|
|
23 | +#endif
|
|
21 | 24 | |
22 | 25 | // ----------------------------------------------------------------------------
|
23 | 26 | // Double buffering helper.
|
... | ... | @@ -69,8 +69,6 @@ public: |
69 | 69 | // returns true if the platform should explicitly apply a theme border
|
70 | 70 | virtual bool CanApplyThemeBorder() const override { return false; }
|
71 | 71 | |
72 | - virtual void MSWOnDisabledComposited() override;
|
|
73 | - |
|
74 | 72 | protected:
|
75 | 73 | virtual wxSize DoGetBestSize() const override;
|
76 | 74 |
... | ... | @@ -554,14 +554,10 @@ public: |
554 | 554 | virtual bool IsDoubleBuffered() const override;
|
555 | 555 | |
556 | 556 | // Ensure that neither this window itself nor any of its parents use
|
557 | - // WS_EX_COMPOSITED: this is used by the native wxListCtrl which is
|
|
558 | - // incompatible with this style.
|
|
557 | + // WS_EX_COMPOSITED: this may only be necessary after calling
|
|
558 | + // SetDoubleBuffered() which sets this style.
|
|
559 | 559 | void MSWDisableComposited();
|
560 | 560 | |
561 | - // This function is called for all child windows when compositing is
|
|
562 | - // disabled for their parent.
|
|
563 | - virtual void MSWOnDisabledComposited() { }
|
|
564 | - |
|
565 | 561 | // synthesize a wxEVT_LEAVE_WINDOW event and set m_mouseInWindow to false
|
566 | 562 | void GenerateMouseLeave();
|
567 | 563 |
... | ... | @@ -47,11 +47,11 @@ public: |
47 | 47 | |
48 | 48 | @note While wxClientDC may also be used for drawing on the client area of a
|
49 | 49 | window from outside an EVT_PAINT() handler in some ports, this does @em not
|
50 | - work on most of the platforms: neither wxOSX nor wxGTK with GTK 3 Wayland
|
|
51 | - backend support this at all, so drawing using wxClientDC simply doesn't
|
|
52 | - have any effect there. CanBeUsedForDrawing() can be used to determine
|
|
53 | - whether wxClientDC can be used for drawing in the current environment, but
|
|
54 | - it is recommended to only draw on the window using wxPaintDC, as this is
|
|
50 | + work on all platforms: neither wxOSX nor wxGTK with GTK 3 Wayland backend
|
|
51 | + support this at all, so drawing using wxClientDC simply doesn't have any
|
|
52 | + effect there. CanBeUsedForDrawing() can be used to determine whether
|
|
53 | + wxClientDC can be used for drawing in the current environment, but it is
|
|
54 | + recommended to only draw on the window using wxPaintDC, as this is
|
|
55 | 55 | guaranteed to work everywhere. To redraw a small part of the window, use
|
56 | 56 | wxWindow::RefreshRect() to invalidate just this part and check
|
57 | 57 | wxWindow::GetUpdateRegion() in the paint event handler to redraw this part
|
... | ... | @@ -20,13 +20,8 @@ |
20 | 20 | wxWidgets 2.9.1 it is strongly recommended to create them as children of
|
21 | 21 | wxStaticBox itself, as doing this avoids problems with repainting that
|
22 | 22 | could happen when creating the other windows as siblings of the box.
|
23 | - Notably, in wxMSW, siblings of the static box are not drawn at all inside
|
|
24 | - it when compositing is used, which is the case by default, and
|
|
25 | - wxWindow::MSWDisableComposited() must be explicitly called to fix this.
|
|
26 | - Creating windows located inside the static box as its children avoids this
|
|
27 | - problem and works well whether compositing is used or not.
|
|
28 | 23 | |
29 | - To summarize, the correct way to create static box and the controls inside
|
|
24 | + To be clear, the correct way to create static box and the controls inside
|
|
30 | 25 | it is:
|
31 | 26 | @code
|
32 | 27 | void MyFrame::CreateControls()
|
... | ... | @@ -82,10 +82,6 @@ |
82 | 82 | appearance but not all fonts are available in this quality,
|
83 | 83 | e.g. the Terminal font in small sizes is not and this option may be
|
84 | 84 | used if wider fonts selection is more important than higher quality.
|
85 | - @flag{msw.window.no-composited}
|
|
86 | - If set to 1, disables the use of composited, i.e. double-buffered,
|
|
87 | - windows by default in wxMSW. This is not recommended, but can be useful
|
|
88 | - for debugging or working around redraw problems in the existing code.
|
|
89 | 85 | @flag{msw.dark-mode}
|
90 | 86 | If set to 1, enable experimental support of dark mode if the system is
|
91 | 87 | using it, i.e. this has the same effect as calling
|
... | ... | @@ -4330,39 +4330,6 @@ public: |
4330 | 4330 | ///@}
|
4331 | 4331 | |
4332 | 4332 | |
4333 | - /**
|
|
4334 | - Disable the use native double buffering in wxMSW.
|
|
4335 | - |
|
4336 | - This MSW-specific function can be used to disable the use of
|
|
4337 | - `WS_EX_COMPOSITED` for this window and all of its parents and so allow
|
|
4338 | - using wxClientDC with it.
|
|
4339 | - |
|
4340 | - `WS_EX_COMPOSITED` style is turned on by default when creating the
|
|
4341 | - windows and it is strongly recommended @e not to use this functions to
|
|
4342 | - remove it, but to instead change the drawing code to avoid using
|
|
4343 | - wxClientDC.
|
|
4344 | - |
|
4345 | - If you do need to use it, please note that this function doesn't exist
|
|
4346 | - in the other ports and has to be explicitly bracketed by the checks for
|
|
4347 | - wxMSW, e.g.
|
|
4348 | - @code
|
|
4349 | - MyFrame::MyFrame(...)
|
|
4350 | - {
|
|
4351 | - auto p = new wxPanel(this);
|
|
4352 | - #ifdef __WXMSW__
|
|
4353 | - p->MSWDisableComposited();
|
|
4354 | - #endif
|
|
4355 | - |
|
4356 | - // Using wxClientDC will work now with this panel in wxMSW --
|
|
4357 | - // although it still won't with wxOSX nor wxGTK under Wayland.
|
|
4358 | - }
|
|
4359 | - @endcode
|
|
4360 | - |
|
4361 | - @see wxClientDC
|
|
4362 | - |
|
4363 | - @since 3.3.0
|
|
4364 | - */
|
|
4365 | - void MSWDisableComposited();
|
|
4366 | 4333 | |
4367 | 4334 | protected:
|
4368 | 4335 |
... | ... | @@ -297,7 +297,6 @@ wxEND_EVENT_TABLE() |
297 | 297 | MyCanvas::MyCanvas(wxWindow *parent, const wxPoint& pos, const wxSize& size)
|
298 | 298 | : wxScrolledWindow(parent, -1, pos, size)
|
299 | 299 | {
|
300 | - MSWDisableComposited();
|
|
301 | 300 | }
|
302 | 301 | |
303 | 302 | // Define the repainting behaviour
|
... | ... | @@ -2757,17 +2757,6 @@ bool wxStaticBoxSizer::CheckIfNonBoxChild(wxWindow* win) const |
2757 | 2757 | wxDumpWindow(win),
|
2758 | 2758 | wxDumpWindow(win->GetParent()));
|
2759 | 2759 | |
2760 | -#if defined(__WXMSW__) && !defined(__WXUNIVERSAL__)
|
|
2761 | - // Additionally, under MSW the windows inside a static box are not
|
|
2762 | - // drawn at all when compositing is used, so we have to disable it.
|
|
2763 | - //
|
|
2764 | - // An alternative could be to Reparent() the window to the static
|
|
2765 | - // box, but it might break the existing code and as we only allow
|
|
2766 | - // this for compatibility in the first place, it seems better not
|
|
2767 | - // to risk it.
|
|
2768 | - win->MSWDisableComposited();
|
|
2769 | -#endif // __WXMSW__ && !__WXUNIVERSAL__
|
|
2770 | - |
|
2771 | 2760 | return true;
|
2772 | 2761 | }
|
2773 | 2762 |
... | ... | @@ -810,10 +810,6 @@ bool wxWebViewChromium::Create(wxWindow* parent, |
810 | 810 | if ( !InitCEF(m_implData->m_config) )
|
811 | 811 | return false;
|
812 | 812 | |
813 | -#ifdef __WXMSW__
|
|
814 | - MSWDisableComposited();
|
|
815 | -#endif // __WXMSW__
|
|
816 | - |
|
817 | 813 | m_clientHandler = new ClientHandler{*this};
|
818 | 814 | m_clientHandler->AddRef();
|
819 | 815 |
... | ... | @@ -51,40 +51,6 @@ |
51 | 51 | // wxDateTimePickerCtrl implementation
|
52 | 52 | // ============================================================================
|
53 | 53 | |
54 | -namespace wxMSWImpl
|
|
55 | -{
|
|
56 | - |
|
57 | -LRESULT CALLBACK
|
|
58 | -DateTimeUDProc(HWND hwnd, UINT nMsg, WPARAM wParam, LPARAM lParam,
|
|
59 | - UINT_PTR uIdSubclass, DWORD_PTR WXUNUSED(dwRefData))
|
|
60 | -{
|
|
61 | - switch ( nMsg )
|
|
62 | - {
|
|
63 | - case WM_PAINT:
|
|
64 | - // This is a bit ridiculous, but we have to explicitly paint the
|
|
65 | - // control here, even if all we do is to let it draw itself,
|
|
66 | - // because without this it may not draw the lower arrow at all when
|
|
67 | - // using WS_EX_COMPOSITED (it probably optimizes redraw by assuming
|
|
68 | - // that previously drawn part doesn't change, but this is not the
|
|
69 | - // case when compositing it used).
|
|
70 | - {
|
|
71 | - PAINTSTRUCT ps;
|
|
72 | - ::BeginPaint(hwnd, &ps);
|
|
73 | - ::DefSubclassProc(hwnd, WM_PAINT, (WPARAM)ps.hdc, 0);
|
|
74 | - ::EndPaint(hwnd, &ps);
|
|
75 | - }
|
|
76 | - return 0;
|
|
77 | - |
|
78 | - case WM_NCDESTROY:
|
|
79 | - ::RemoveWindowSubclass(hwnd, DateTimeUDProc, uIdSubclass);
|
|
80 | - break;
|
|
81 | - }
|
|
82 | - |
|
83 | - return ::DefSubclassProc(hwnd, nMsg, wParam, lParam);
|
|
84 | -}
|
|
85 | - |
|
86 | -} // namespace wxMSWImpl
|
|
87 | - |
|
88 | 54 | bool
|
89 | 55 | wxDateTimePickerCtrl::MSWCreateDateTimePicker(wxWindow *parent,
|
90 | 56 | wxWindowID id,
|
... | ... | @@ -111,15 +77,6 @@ wxDateTimePickerCtrl::MSWCreateDateTimePicker(wxWindow *parent, |
111 | 77 | else
|
112 | 78 | SetValue(wxDateTime::Now());
|
113 | 79 | |
114 | - // If have an up-down control, we must explicitly paint it ourselves
|
|
115 | - // because otherwise it may be not redrawn at all with WS_EX_COMPOSITED.
|
|
116 | - WinStruct<DATETIMEPICKERINFO> info;
|
|
117 | - ::SendMessage(GetHwnd(), DTM_GETDATETIMEPICKERINFO, 0, (LPARAM)&info);
|
|
118 | - if ( info.hwndUD )
|
|
119 | - {
|
|
120 | - ::SetWindowSubclass(info.hwndUD, wxMSWImpl::DateTimeUDProc, 0, 0);
|
|
121 | - }
|
|
122 | - |
|
123 | 80 | return true;
|
124 | 81 | }
|
125 | 82 |
... | ... | @@ -271,10 +271,6 @@ bool wxDragImage::BeginDrag(const wxPoint& hotspot, wxWindow* window, bool fullS |
271 | 271 | wxASSERT_MSG( (m_hImageList != 0), wxT("Image list must not be null in BeginDrag."));
|
272 | 272 | wxASSERT_MSG( (window != 0), wxT("Window must not be null in BeginDrag."));
|
273 | 273 | |
274 | - // Using ImageList_BeginDrag() doesn't work with composited windows,
|
|
275 | - // nothing gets shown, so reset WS_EX_COMPOSITED to make it work.
|
|
276 | - window->MSWDisableComposited();
|
|
277 | - |
|
278 | 274 | m_fullScreen = fullScreen;
|
279 | 275 | if (rect)
|
280 | 276 | m_boundingRect = * rect;
|
... | ... | @@ -735,8 +735,6 @@ bool wxGLCanvas::Create(wxWindow *parent, |
735 | 735 | if ( !CreateWindow(parent, id, pos, size, style, name) )
|
736 | 736 | return false;
|
737 | 737 | |
738 | - MSWDisableComposited();
|
|
739 | - |
|
740 | 738 | // Choose a matching pixel format.
|
741 | 739 | // Need a PIXELFORMATDESCRIPTOR for SetPixelFormat()
|
742 | 740 | PIXELFORMATDESCRIPTOR pfd;
|
... | ... | @@ -257,11 +257,6 @@ bool wxListCtrl::Create(wxWindow *parent, |
257 | 257 | if ( !MSWCreateControl(WC_LISTVIEW, wxEmptyString, pos, size) )
|
258 | 258 | return false;
|
259 | 259 | |
260 | - // LISTVIEW generates and endless stream of LVN_ODCACHEHINT event for a
|
|
261 | - // virtual wxListCtrl, so disable WS_EX_COMPOSITED.
|
|
262 | - if ( IsVirtual() )
|
|
263 | - MSWDisableComposited();
|
|
264 | - |
|
265 | 260 | const wxVisualAttributes& defAttrs = GetDefaultAttributes();
|
266 | 261 | |
267 | 262 | if ( wxMSWDarkMode::IsActive() )
|
... | ... | @@ -22,7 +22,6 @@ |
22 | 22 | #ifndef WX_PRECOMP
|
23 | 23 | #include "wx/msw/wrapcctl.h" // include <commctrl.h> "properly"
|
24 | 24 | #include "wx/app.h"
|
25 | - #include "wx/dcclient.h"
|
|
26 | 25 | #include "wx/dcmemory.h"
|
27 | 26 | #endif
|
28 | 27 | |
... | ... | @@ -253,13 +252,7 @@ void wxSpinButton::OnPaint(wxPaintEvent& event) |
253 | 252 | }
|
254 | 253 | else
|
255 | 254 | {
|
256 | - // We need to always paint this control explicitly instead of letting
|
|
257 | - // DefWndProc() do it, as this avoids whichever optimization the latter
|
|
258 | - // function does when WS_EX_COMPOSITED is on that result in not drawing
|
|
259 | - // parts of the control at all (see #23656).
|
|
260 | - wxPaintDC dc(this);
|
|
261 | - |
|
262 | - wxSpinButtonBase::OnPaint(event);
|
|
255 | + event.Skip();
|
|
263 | 256 | }
|
264 | 257 | }
|
265 | 258 |
... | ... | @@ -122,8 +122,6 @@ void wxStaticBox::UseCustomPaint() |
122 | 122 | // means we don't need to do anything.
|
123 | 123 | if ( GetBackgroundStyle() != wxBG_STYLE_PAINT )
|
124 | 124 | {
|
125 | - wxMSWWinExStyleUpdater(GetHwnd()).TurnOff(WS_EX_TRANSPARENT);
|
|
126 | - |
|
127 | 125 | Bind(wxEVT_PAINT, &wxStaticBox::OnPaint, this);
|
128 | 126 | |
129 | 127 | // Our OnPaint() completely erases our background, so don't do it in
|
... | ... | @@ -132,14 +130,6 @@ void wxStaticBox::UseCustomPaint() |
132 | 130 | }
|
133 | 131 | }
|
134 | 132 | |
135 | -void wxStaticBox::MSWOnDisabledComposited()
|
|
136 | -{
|
|
137 | - // We need to enable custom painting if we're not using compositing any
|
|
138 | - // longer, as otherwise the window is not drawn correctly due to it using
|
|
139 | - // WS_EX_TRANSPARENT and thus not redrawing its background.
|
|
140 | - UseCustomPaint();
|
|
141 | -}
|
|
142 | - |
|
143 | 133 | bool wxStaticBox::Create(wxWindow* parent,
|
144 | 134 | wxWindowID id,
|
145 | 135 | wxWindow* labelWin,
|
... | ... | @@ -1078,8 +1078,6 @@ bool wxWebViewEdge::Create(wxWindow* parent, |
1078 | 1078 | return false;
|
1079 | 1079 | }
|
1080 | 1080 | |
1081 | - MSWDisableComposited();
|
|
1082 | - |
|
1083 | 1081 | if (!m_impl->Create())
|
1084 | 1082 | return false;
|
1085 | 1083 | Bind(wxEVT_SIZE, &wxWebViewEdge::OnSize, this);
|
... | ... | @@ -472,47 +472,6 @@ bool wxWindowMSW::CreateUsingMSWClass(const wxChar* classname, |
472 | 472 | msflags &= ~WS_BORDER;
|
473 | 473 | #endif // wxUniversal
|
474 | 474 | |
475 | - // Enable double buffering by default for all our own, i.e. not the ones
|
|
476 | - // using native controls, classes.
|
|
477 | - //
|
|
478 | - // The loop here is a bogus one just to create a block that we can break
|
|
479 | - // from, it never executes more than once.
|
|
480 | - while ( !classname )
|
|
481 | - {
|
|
482 | - // WS_EX_COMPOSITED seems to be incompatible with WS_EX_TOPMOST, so
|
|
483 | - // don't use it for:
|
|
484 | - |
|
485 | - // Popup windows that get created with this style themselves: this
|
|
486 | - // seems to work under Windows 10, but doesn't under Windows 7 and
|
|
487 | - // using WS_EX_COMPOSITED for these windows that are temporarily
|
|
488 | - // doesn't seem to be very useful anyhow, so don't bother testing for
|
|
489 | - // the OS version and just always disable it for them.
|
|
490 | - if ( exstyle & WS_EX_TOPMOST )
|
|
491 | - break;
|
|
492 | - |
|
493 | - // Children of such windows as this doesn't work either (see #23078).
|
|
494 | - wxWindow* const tlw = wxGetTopLevelParent(this);
|
|
495 | - if ( tlw && tlw->HasFlag(wxSTAY_ON_TOP) )
|
|
496 | - break;
|
|
497 | - |
|
498 | - // We also allow disabling the use of this style globally by setting
|
|
499 | - // a system option if nothing else (i.e. turning it off for individual
|
|
500 | - // windows) works.
|
|
501 | - if ( wxSystemOptions::GetOptionInt("msw.window.no-composited") )
|
|
502 | - break;
|
|
503 | - |
|
504 | - // Do enable composition for this window.
|
|
505 | - |
|
506 | - exstyle |= WS_EX_COMPOSITED;
|
|
507 | - |
|
508 | - // We have to use the class including CS_[HV]REDRAW bits, as
|
|
509 | - // WS_EX_COMPOSITED doesn't work correctly if the entire window is
|
|
510 | - // not redrawn every time it's drawn.
|
|
511 | - style |= wxFULL_REPAINT_ON_RESIZE;
|
|
512 | - |
|
513 | - break;
|
|
514 | - }
|
|
515 | - |
|
516 | 475 | if ( IsShown() )
|
517 | 476 | {
|
518 | 477 | msflags |= WS_VISIBLE;
|
... | ... | @@ -1678,15 +1637,10 @@ void wxWindowMSW::MSWDisableComposited() |
1678 | 1637 | {
|
1679 | 1638 | for ( auto win = this; win; win = win->GetParent() )
|
1680 | 1639 | {
|
1681 | - // We never set WS_EX_COMPOSITED on TLWs, and we shouldn't recurse into
|
|
1682 | - // different windows, so we can stop here.
|
|
1640 | + wxMSWWinExStyleUpdater(GetHwndOf(win)).TurnOff(WS_EX_COMPOSITED);
|
|
1641 | + |
|
1683 | 1642 | if ( win->IsTopLevel() )
|
1684 | 1643 | break;
|
1685 | - |
|
1686 | - wxMSWWinExStyleUpdater updater(GetHwndOf(win));
|
|
1687 | - updater.TurnOff(WS_EX_COMPOSITED);
|
|
1688 | - if ( updater.Apply() )
|
|
1689 | - win->CallForEachChild([](wxWindow* w) { w->MSWOnDisabledComposited(); });
|
|
1690 | 1644 | }
|
1691 | 1645 | }
|
1692 | 1646 |
... | ... | @@ -229,8 +229,14 @@ void SliderTestCase::Thumb() |
229 | 229 | |
230 | 230 | CPPUNIT_ASSERT(track.GetCount() != 0);
|
231 | 231 | CPPUNIT_ASSERT_EQUAL(1, release.GetCount());
|
232 | -#if defined(__WXMSW__) || defined(__WXGTK__) || \
|
|
233 | - (defined(__WXQT__) && QT_VERSION < QT_VERSION_CHECK(6, 8, 0))
|
|
232 | + |
|
233 | +#ifdef __WXQT__
|
|
234 | + #if QT_VERSION >= QT_VERSION_CHECK(6, 8, 0)
|
|
235 | + WARN("wxEVT_SCROLL_CHANGED is generated twice with Qt 6.8, skipping test");
|
|
236 | + return;
|
|
237 | + #endif
|
|
238 | +#endif
|
|
239 | +#if defined(__WXMSW__) || defined(__WXGTK__) || defined(__WXQT__)
|
|
234 | 240 | CPPUNIT_ASSERT_EQUAL(1, changed.GetCount());
|
235 | 241 | #endif
|
236 | 242 | #endif
|
—
View it on GitLab.
You're receiving this email because of your account on gitlab.com. Manage all notifications · Help