From e21230a3b8b4aca50121c373a6ffea770807d4a0 Mon Sep 17 00:00:00 2001 From: Johan Klokkhammer Helsing Date: Tue, 11 Feb 2020 14:28:32 +0100 Subject: Client: Don't allow decorations for frameless windows This only fixes it for when Qt::FramelessWindowHint is set appropriately before the window is shown. [ChangeLog][QPA plugin] Windows with Qt::FramelessWindowHint no longer create zxdg_toplevel_decoration_v1, as that allowed compositors to force server-side decorations. Fixes: QTBUG-80702 Change-Id: I47a582a59f6682a57128c0c9d4e4b9a6181925a4 Reviewed-by: Pier Luigi Fiorini --- .../client/xdgdecorationv1/tst_xdgdecorationv1.cpp | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) (limited to 'tests') diff --git a/tests/auto/client/xdgdecorationv1/tst_xdgdecorationv1.cpp b/tests/auto/client/xdgdecorationv1/tst_xdgdecorationv1.cpp index 386713cf5..391abd83b 100644 --- a/tests/auto/client/xdgdecorationv1/tst_xdgdecorationv1.cpp +++ b/tests/auto/client/xdgdecorationv1/tst_xdgdecorationv1.cpp @@ -153,6 +153,7 @@ private slots: void initTestCase(); void cleanup() { QTRY_VERIFY2(isClean(), qPrintable(dirtyMessage())); } void clientSidePreferredByCompositor(); + void initialFramelessWindowHint(); }; void tst_xdgdecorationv1::initTestCase() @@ -182,5 +183,22 @@ void tst_xdgdecorationv1::clientSidePreferredByCompositor() QTRY_VERIFY(!window.frameMargins().isNull()); } +void tst_xdgdecorationv1::initialFramelessWindowHint() +{ + QRasterWindow window; + window.setFlag(Qt::FramelessWindowHint, true); + window.show(); + QCOMPOSITOR_TRY_COMPARE(get()->resourceMap().size(), 1); + QCOMPOSITOR_TRY_VERIFY(xdgToplevel()); + exec([=]{ + xdgToplevel()->sendCompleteConfigure(); + }); + QCOMPOSITOR_TRY_VERIFY(xdgSurface()->m_committedConfigureSerial); + + // The client should not have create a decoration object, because that allows the compositor + // to override our decision and add server side decorations to our window. + QCOMPOSITOR_TRY_VERIFY(!toplevelDecoration()); +} + QCOMPOSITOR_TEST_MAIN(tst_xdgdecorationv1) #include "tst_xdgdecorationv1.moc" -- cgit v1.2.3