diff options
author | Shawn Rutledge <shawn.rutledge@qt.io> | 2018-07-03 13:59:12 +0200 |
---|---|---|
committer | Shawn Rutledge <shawn.rutledge@qt.io> | 2018-07-03 15:07:13 +0000 |
commit | 284979ae8a6522ef6454966be69085e618c5c478 (patch) | |
tree | 296d1837a3a64e909f94ccfd0a6ca47aab77e69e /tests/auto/quick/pointerhandlers/qquicktaphandler | |
parent | 4d3d3e1099d628479929ab293d267016bb183c96 (diff) |
Input handler tests: remember positions of stationary points
We need Handlers to receive accurate positions for stationary touch
points: that is, the last-known position from the previous touch
event. (And we hope that all actual touch-capable platforms also send
proper QPA events with correct positions for stationary points.
We assert that it's a bug if they don't.)
As explained in qtbase 7cef4b6463fdb73ff602ade64b222333dd23e46c, it's
OK to retain a copy of a QTest::QTouchEventSequence for this purpose,
so that the QMap<int, QTouchEvent::TouchPoint> previousPoints will not
be discarded between events.
We have done this in other tests, but not consistently; e.g.
468626e99a90d6ac21cb311cde05c658ccb3b781 fixed the PinchArea test.
Change-Id: I4dbe69f8dcc4b1cca30fd7ce91d7d2ecf5ec4bc3
Reviewed-by: Jan Arve Sæther <jan-arve.saether@qt.io>
Diffstat (limited to 'tests/auto/quick/pointerhandlers/qquicktaphandler')
-rw-r--r-- | tests/auto/quick/pointerhandlers/qquicktaphandler/tst_qquicktaphandler.cpp | 19 |
1 files changed, 10 insertions, 9 deletions
diff --git a/tests/auto/quick/pointerhandlers/qquicktaphandler/tst_qquicktaphandler.cpp b/tests/auto/quick/pointerhandlers/qquicktaphandler/tst_qquicktaphandler.cpp index 6d2c1ab3f9..f9970df9f0 100644 --- a/tests/auto/quick/pointerhandlers/qquicktaphandler/tst_qquicktaphandler.cpp +++ b/tests/auto/quick/pointerhandlers/qquicktaphandler/tst_qquicktaphandler.cpp @@ -526,23 +526,24 @@ void tst_TapHandler::buttonsMultiTouch() QQuickItem *buttonReleaseWithinBounds = window->rootObject()->findChild<QQuickItem*>("ReleaseWithinBounds"); QVERIFY(buttonReleaseWithinBounds); QSignalSpy releaseWithinBoundsTappedSpy(buttonReleaseWithinBounds, SIGNAL(tapped())); + QTest::QTouchEventSequence touchSeq = QTest::touchEvent(window, touchDevice, false); // can press multiple buttons at the same time QPoint p1 = buttonDragThreshold->mapToScene(QPointF(20, 20)).toPoint(); - QTest::touchEvent(window, touchDevice).press(1, p1, window); + touchSeq.press(1, p1, window).commit(); QQuickTouchUtils::flush(window); QTRY_VERIFY(buttonDragThreshold->property("pressed").toBool()); QPoint p2 = buttonWithinBounds->mapToScene(QPointF(20, 20)).toPoint(); - QTest::touchEvent(window, touchDevice).stationary(1).press(2, p2, window); + touchSeq.stationary(1).press(2, p2, window).commit(); QQuickTouchUtils::flush(window); QTRY_VERIFY(buttonWithinBounds->property("pressed").toBool()); QPoint p3 = buttonReleaseWithinBounds->mapToScene(QPointF(20, 20)).toPoint(); - QTest::touchEvent(window, touchDevice).stationary(1).stationary(2).press(3, p3, window); + touchSeq.stationary(1).stationary(2).press(3, p3, window).commit(); QQuickTouchUtils::flush(window); QTRY_VERIFY(buttonReleaseWithinBounds->property("pressed").toBool()); // can release top button and press again: others stay pressed the whole time - QTest::touchEvent(window, touchDevice).stationary(2).stationary(3).release(1, p1, window); + touchSeq.stationary(2).stationary(3).release(1, p1, window).commit(); QQuickTouchUtils::flush(window); QTRY_VERIFY(!buttonDragThreshold->property("pressed").toBool()); QCOMPARE(dragThresholdTappedSpy.count(), 1); @@ -550,14 +551,14 @@ void tst_TapHandler::buttonsMultiTouch() QCOMPARE(withinBoundsTappedSpy.count(), 0); QVERIFY(buttonReleaseWithinBounds->property("pressed").toBool()); QCOMPARE(releaseWithinBoundsTappedSpy.count(), 0); - QTest::touchEvent(window, touchDevice).stationary(2).stationary(3).press(1, p1, window); + touchSeq.stationary(2).stationary(3).press(1, p1, window).commit(); QQuickTouchUtils::flush(window); QTRY_VERIFY(buttonDragThreshold->property("pressed").toBool()); QVERIFY(buttonWithinBounds->property("pressed").toBool()); QVERIFY(buttonReleaseWithinBounds->property("pressed").toBool()); // can release middle button and press again: others stay pressed the whole time - QTest::touchEvent(window, touchDevice).stationary(1).stationary(3).release(2, p2, window); + touchSeq.stationary(1).stationary(3).release(2, p2, window).commit(); QQuickTouchUtils::flush(window); QTRY_VERIFY(!buttonWithinBounds->property("pressed").toBool()); QCOMPARE(withinBoundsTappedSpy.count(), 1); @@ -565,21 +566,21 @@ void tst_TapHandler::buttonsMultiTouch() QCOMPARE(dragThresholdTappedSpy.count(), 1); QVERIFY(buttonReleaseWithinBounds->property("pressed").toBool()); QCOMPARE(releaseWithinBoundsTappedSpy.count(), 0); - QTest::touchEvent(window, touchDevice).stationary(1).stationary(3).press(2, p2, window); + touchSeq.stationary(1).stationary(3).press(2, p2, window).commit(); QQuickTouchUtils::flush(window); QVERIFY(buttonDragThreshold->property("pressed").toBool()); QVERIFY(buttonWithinBounds->property("pressed").toBool()); QVERIFY(buttonReleaseWithinBounds->property("pressed").toBool()); // can release bottom button and press again: others stay pressed the whole time - QTest::touchEvent(window, touchDevice).stationary(1).stationary(2).release(3, p3, window); + touchSeq.stationary(1).stationary(2).release(3, p3, window).commit(); QQuickTouchUtils::flush(window); QCOMPARE(releaseWithinBoundsTappedSpy.count(), 1); QVERIFY(buttonWithinBounds->property("pressed").toBool()); QCOMPARE(withinBoundsTappedSpy.count(), 1); QVERIFY(!buttonReleaseWithinBounds->property("pressed").toBool()); QCOMPARE(dragThresholdTappedSpy.count(), 1); - QTest::touchEvent(window, touchDevice).stationary(1).stationary(2).press(3, p3, window); + touchSeq.stationary(1).stationary(2).press(3, p3, window).commit(); QQuickTouchUtils::flush(window); QTRY_VERIFY(buttonDragThreshold->property("pressed").toBool()); QVERIFY(buttonWithinBounds->property("pressed").toBool()); |