diff --git a/autotests/integration/quick_tiling_test.cpp b/autotests/integration/quick_tiling_test.cpp index 6628b68b20..6ec9df5fe9 100644 --- a/autotests/integration/quick_tiling_test.cpp +++ b/autotests/integration/quick_tiling_test.cpp @@ -340,7 +340,8 @@ void QuickTilingTest::testQuickTilingPointerMove() Test::pointerMotion(pointerPos, timestamp++); Test::pointerButtonReleased(BTN_LEFT, timestamp++); QTEST(window->requestedQuickTileMode(), "expectedMode"); - QCOMPARE(window->geometryRestore(), QRect(0, 0, 100, 50)); + const QPoint tileOutputPositon = workspace()->outputAt(pointerPos)->geometry().topLeft(); + QCOMPARE(window->geometryRestore(), QRect(tileOutputPositon, QSize(100, 50))); QVERIFY(surfaceConfigureRequestedSpy.wait()); QCOMPARE(surfaceConfigureRequestedSpy.count(), 2); QCOMPARE(toplevelConfigureRequestedSpy.last().at(0).toSize(), tileSize); @@ -376,7 +377,7 @@ void QuickTilingTest::testQuickTilingPointerMove() Test::pointerMotion(pointerPos, timestamp++); // tile the window again Test::pointerButtonReleased(BTN_LEFT, timestamp++); QTEST(window->requestedQuickTileMode(), "expectedMode"); - QCOMPARE(window->geometryRestore(), QRect(0, 0, 100, 50)); + QCOMPARE(window->geometryRestore(), QRect(tileOutputPositon, QSize(100, 50))); QVERIFY(surfaceConfigureRequestedSpy.wait()); QCOMPARE(surfaceConfigureRequestedSpy.count(), 4); QCOMPARE(toplevelConfigureRequestedSpy.last().at(0).toSize(), tileSize); diff --git a/src/window.cpp b/src/window.cpp index 4a7b344a05..8cac1add4d 100644 --- a/src/window.cpp +++ b/src/window.cpp @@ -1251,6 +1251,9 @@ void Window::finishInteractiveMoveResize(bool cancel) } } else if (moveResizeOutput() != interactiveMoveResizeStartOutput()) { sendToOutput(moveResizeOutput()); // checks rule validity + const QRectF oldScreenArea = workspace()->clientArea(MaximizeArea, this, interactiveMoveResizeStartOutput()); + const QRectF screenArea = workspace()->clientArea(MaximizeArea, this, moveResizeOutput()); + m_electricGeometryRestore = moveToArea(m_electricGeometryRestore, oldScreenArea, screenArea); if (isRequestedFullScreen() || requestedMaximizeMode() != MaximizeRestore) { checkWorkspacePosition(); }