diff --git a/autotests/integration/quick_tiling_test.cpp b/autotests/integration/quick_tiling_test.cpp index 7fb844c086..7958612d64 100644 --- a/autotests/integration/quick_tiling_test.cpp +++ b/autotests/integration/quick_tiling_test.cpp @@ -470,7 +470,7 @@ void QuickTilingTest::testQuickTilingPointerMoveXdgShell() QCOMPARE(c->quickTileMode(), QuickTileMode(QuickTileFlag::None)); QCOMPARE(c->maximizeMode(), MaximizeRestore); QVERIFY(configureRequestedSpy.wait()); - QCOMPARE(configureRequestedSpy.count(), 2); + QTRY_COMPARE(configureRequestedSpy.count(), 2); QSignalSpy quickTileChangedSpy(c, &AbstractClient::quickTileModeChanged); QVERIFY(quickTileChangedSpy.isValid()); @@ -492,9 +492,7 @@ void QuickTilingTest::testQuickTilingPointerMoveXdgShell() QCOMPARE(quickTileChangedSpy.count(), 1); QTEST(c->quickTileMode(), "expectedMode"); QVERIFY(configureRequestedSpy.wait()); - QEXPECT_FAIL("", "BUG 388072", Continue); QCOMPARE(configureRequestedSpy.count(), 4); - QEXPECT_FAIL("", "BUG 388072", Continue); QCOMPARE(false, configureRequestedSpy.last().first().toSize().isEmpty()); } diff --git a/geometry.cpp b/geometry.cpp index 7885b6b365..d732ee6da4 100644 --- a/geometry.cpp +++ b/geometry.cpp @@ -2745,6 +2745,7 @@ bool Client::doStartMoveResize() void AbstractClient::finishMoveResize(bool cancel) { + GeometryUpdatesBlocker blocker(this); const bool wasResize = isResize(); // store across leaveMoveResize leaveMoveResize(); diff --git a/shell_client.cpp b/shell_client.cpp index 113092001e..6df6814bb9 100644 --- a/shell_client.cpp +++ b/shell_client.cpp @@ -293,6 +293,9 @@ void ShellClient::init() if (m_closing) { return; } + if (m_requestGeometryBlockCounter != 0 || areGeometryUpdatesBlocked()) { + return; + } m_xdgShellSurface->configure(xdgSurfaceStates()); }; configure(); diff --git a/shell_client.h b/shell_client.h index 3a22acbcf3..205e9caec3 100644 --- a/shell_client.h +++ b/shell_client.h @@ -245,6 +245,8 @@ private: if (m_client->m_requestGeometryBlockCounter == 0) { if (m_client->m_blockedRequestGeometry.isValid()) { m_client->requestGeometry(m_client->m_blockedRequestGeometry); + } else if (m_client->m_xdgShellSurface) { + m_client->m_xdgShellSurface->configure(m_client->xdgSurfaceStates()); } } }