From d9cdac38e775b33f115fdb73de350c13ae08f1c0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=9B=B7=E7=94=B5=E8=8A=BD=E8=A1=A3?= Date: Sun, 11 Oct 2026 12:45:46 -0400 Subject: [PATCH] 14.24 round 2: the zoom moves beside the other drags --- tests/CanvasNavigationTests.cpp | 24 ++++++++++++++---------- 1 file changed, 14 insertions(+), 10 deletions(-) diff --git a/tests/CanvasNavigationTests.cpp b/tests/CanvasNavigationTests.cpp index 8299c92..ba04549 100644 --- a/tests/CanvasNavigationTests.cpp +++ b/tests/CanvasNavigationTests.cpp @@ -325,24 +325,28 @@ void CanvasNavigationTests::ctrlOrMetaWithTheMiddleButtonZooms() move(start - QPointF(0, 100), Qt::MiddleButton); QCOMPARE(session.viewport.zoom(), 1.5); QTest::mouseRelease(&canvas, Qt::MiddleButton, Qt::ControlModifier, (start - QPointF(0, 100)).toPoint()); - // A right-button tip drag waits; a left Hand drag goes on. + // A right-button tip drag waits while the zoom goes on. const double diameter = session.brushSettings().diameter; QTest::mousePress(&canvas, Qt::RightButton, Qt::NoModifier, QPoint(100, 100)); QTest::mousePress(&canvas, Qt::MiddleButton, Qt::ControlModifier, QPoint(100, 150)); - move(QPointF(300, 150), Qt::RightButton | Qt::MiddleButton); - QCOMPARE(session.brushSettings().diameter, diameter); - QTest::mouseRelease(&canvas, Qt::MiddleButton, Qt::ControlModifier, QPoint(300, 150)); + move(QPointF(300, 50), Qt::RightButton | Qt::MiddleButton); + QVERIFY(session.viewport.zoom() == 3.0 && session.brushSettings().diameter == diameter); + QTest::mouseRelease(&canvas, Qt::MiddleButton, Qt::ControlModifier, QPoint(300, 50)); QTest::mouseRelease(&canvas, Qt::RightButton, Qt::NoModifier, QPoint(100, 100)); + // Beside a Hand drag: the zoom, then the pan. + session.zoom(1); session.selectTool(NavigationTool::hand); canvas.synchronizeDisplay(); - const QSizeF handStart = session.viewport.pan; + CanvasViewport expected = session.viewport; + expected.setZoom(2, QPointF(200, 200), size); + expected.translate(QSizeF(10, 50)); QTest::mousePress(&canvas, Qt::LeftButton, Qt::NoModifier, QPoint(50, 50)); QTest::mousePress(&canvas, Qt::MiddleButton, Qt::ControlModifier, QPoint(200, 200)); - move(QPointF(60, 200), Qt::LeftButton | Qt::MiddleButton); - QCOMPARE(session.viewport.zoom(), 1.5); - QCOMPARE(session.viewport.pan, handStart + QSizeF(10, 150)); - QTest::mouseRelease(&canvas, Qt::MiddleButton, Qt::ControlModifier, QPoint(60, 200)); - QTest::mouseRelease(&canvas, Qt::LeftButton, Qt::NoModifier, QPoint(60, 200)); + move(QPointF(60, 100), Qt::LeftButton | Qt::MiddleButton); + QCOMPARE(session.viewport.zoom(), 2.0); + QCOMPARE(session.viewport.pan, expected.pan); + QTest::mouseRelease(&canvas, Qt::MiddleButton, Qt::ControlModifier, QPoint(60, 100)); + QTest::mouseRelease(&canvas, Qt::LeftButton, Qt::NoModifier, QPoint(60, 100)); } QTEST_MAIN(CanvasNavigationTests)