diff --git a/autotests/integration/quick_tiling_test.cpp b/autotests/integration/quick_tiling_test.cpp index d4466b7bb9..26e0760073 100644 --- a/autotests/integration/quick_tiling_test.cpp +++ b/autotests/integration/quick_tiling_test.cpp @@ -389,6 +389,7 @@ void QuickTilingTest::testQuickTilingPointerMove() // we have to receive a configure event when the window becomes active QSignalSpy toplevelConfigureRequestedSpy(shellSurface.get(), &Test::XdgToplevel::configureRequested); QSignalSpy surfaceConfigureRequestedSpy(shellSurface->xdgSurface(), &Test::XdgSurface::configureRequested); + QSignalSpy frameGeometryChangedSpy(window, &Window::frameGeometryChanged); QVERIFY(surfaceConfigureRequestedSpy.wait()); QCOMPARE(surfaceConfigureRequestedSpy.count(), 1); @@ -412,6 +413,12 @@ void QuickTilingTest::testQuickTilingPointerMove() QCOMPARE(surfaceConfigureRequestedSpy.count(), 2); QCOMPARE(toplevelConfigureRequestedSpy.last().at(0).toSize(), tileSize); + // attach a new image + shellSurface->xdgSurface()->ack_configure(surfaceConfigureRequestedSpy.last().at(0).value()); + Test::render(surface.get(), tileSize, Qt::red); + QVERIFY(frameGeometryChangedSpy.wait()); + QCOMPARE(window->frameGeometry().size(), tileSize); + // verify that geometry restore is correct after user untiles the window, but changes // their mind and tiles the window again while still holding left button workspace()->performWindowOperation(window, Options::UnrestrictedMoveOp); @@ -425,6 +432,12 @@ void QuickTilingTest::testQuickTilingPointerMove() QCOMPARE(surfaceConfigureRequestedSpy.count(), 3); QCOMPARE(toplevelConfigureRequestedSpy.last().at(0).toSize(), QSize(100, 50)); + // attach a new image + shellSurface->xdgSurface()->ack_configure(surfaceConfigureRequestedSpy.last().at(0).value()); + Test::render(surface.get(), QSize(100, 50), Qt::red); + QVERIFY(frameGeometryChangedSpy.wait()); + QCOMPARE(window->frameGeometry().size(), QSize(100, 50)); + Test::pointerMotion(pointerPos, timestamp++); // tile the window again Test::pointerButtonReleased(BTN_LEFT, timestamp++); QCOMPARE(quickTileChangedSpy.count(), 3); diff --git a/src/window.cpp b/src/window.cpp index 0982649be4..f5699225a2 100644 --- a/src/window.cpp +++ b/src/window.cpp @@ -3392,7 +3392,7 @@ QRectF Window::quickTileGeometry(QuickTileMode mode, const QPointF &pos) const void Window::updateElectricGeometryRestore() { m_electricGeometryRestore = geometryRestore(); - if (quickTileMode() == QuickTileMode(QuickTileFlag::None)) { + if (m_interactiveMoveResize.initialQuickTileMode == QuickTileMode(QuickTileFlag::None)) { if (!(requestedMaximizeMode() & MaximizeHorizontal)) { m_electricGeometryRestore.setX(x()); m_electricGeometryRestore.setWidth(width());