diff --git a/autotests/integration/xdgshellclient_test.cpp b/autotests/integration/xdgshellclient_test.cpp index 26143b8b0d..53f698f1f5 100644 --- a/autotests/integration/xdgshellclient_test.cpp +++ b/autotests/integration/xdgshellclient_test.cpp @@ -768,7 +768,6 @@ void TestXdgShellClient::testWindowOpensLargerThanScreen() QVERIFY(c); QVERIFY(c->isActive()); QVERIFY(c->isDecorated()); - QEXPECT_FAIL("", "BUG 366632", Continue); QCOMPARE(c->frameGeometry(), QRect(QPoint(0, 0), screens()->size(0))); } diff --git a/src/xdgshellclient.cpp b/src/xdgshellclient.cpp index cf6df2bce9..77a0cac9f0 100644 --- a/src/xdgshellclient.cpp +++ b/src/xdgshellclient.cpp @@ -638,7 +638,10 @@ void XdgToplevelClient::updateDecoration(bool check_workspace_pos, bool force) } updateShadow(); if (check_workspace_pos) { + const QRect oldGeometryRestore = geometryRestore(); + setGeometryRestore(frameGeometry()); checkWorkspacePosition(oldFrameGeometry, -2, oldClientGeometry); + setGeometryRestore(oldGeometryRestore); } blockGeometryUpdates(false); } @@ -755,7 +758,7 @@ void XdgToplevelClient::handleRoleCommit() if (configureEvent) { handleStatesAcknowledged(configureEvent->states); } - updateDecoration(false, false); + updateDecoration(true, false); } void XdgToplevelClient::doMinimize() @@ -1288,7 +1291,7 @@ void XdgToplevelClient::installServerDecoration(ServerSideDecorationInterface *d [this] (ServerSideDecorationManagerInterface::Mode mode) { const bool changed = mode != m_serverDecoration->mode(); if (changed && readyForPainting()) { - updateDecoration(/* check_workspace_pos */ false); + updateDecoration(/* check_workspace_pos */ true); } } );