diff options
author | Shawn Rutledge <shawn.rutledge@qt.io> | 2023-03-07 14:12:18 +0100 |
---|---|---|
committer | Qt Cherry-pick Bot <cherrypick_bot@qt-project.org> | 2023-04-12 01:09:42 +0000 |
commit | ddab508952adea2b9246e370983ef64c6d30a630 (patch) | |
tree | 6cd427bcd5610c0c99a33e474184cc38ce19ee6c /tests | |
parent | d61f8a30af216774635a845c529a8cc4fb0153f7 (diff) |
Fix TapHandler signals in combination with exclusiveSignals
TapHandler does not emit any singleTapped or doubleTapped signals after
emitting it once, if exclusiveSignals is set to `SingleTap | DoubleTap`.
This change corrects the behavior by resetting m_tapCount properly.
Fixes: QTBUG-111800
Change-Id: Ice7af2f41c2f30448004033d8330e733abe44110
Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
Reviewed-by: Jan Arve Sæther <jan-arve.saether@qt.io>
(cherry picked from commit 951ab9f3c06311458bc7d44c127e034af3e4cff5)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
Diffstat (limited to 'tests')
-rw-r--r-- | tests/auto/quick/pointerhandlers/qquicktaphandler/tst_qquicktaphandler.cpp | 22 |
1 files changed, 20 insertions, 2 deletions
diff --git a/tests/auto/quick/pointerhandlers/qquicktaphandler/tst_qquicktaphandler.cpp b/tests/auto/quick/pointerhandlers/qquicktaphandler/tst_qquicktaphandler.cpp index 8f4cc56698..65b40c08a3 100644 --- a/tests/auto/quick/pointerhandlers/qquicktaphandler/tst_qquicktaphandler.cpp +++ b/tests/auto/quick/pointerhandlers/qquicktaphandler/tst_qquicktaphandler.cpp @@ -715,12 +715,13 @@ void tst_TapHandler::singleTapDoubleTap() QSignalSpy singleTapSpy(tapHandler, &QQuickTapHandler::singleTapped); QSignalSpy doubleTapSpy(tapHandler, &QQuickTapHandler::doubleTapped); - auto tap = [window, tapHandler, deviceType, this](const QPoint &p1) { + auto tap = [window, tapHandler, deviceType, this](const QPoint &p1, int delay = 10) { switch (static_cast<QPointingDevice::DeviceType>(deviceType)) { case QPointingDevice::DeviceType::Mouse: - QTest::mouseClick(window, Qt::LeftButton, Qt::NoModifier, p1, 10); + QTest::mouseClick(window, Qt::LeftButton, Qt::NoModifier, p1, delay); break; case QPointingDevice::DeviceType::TouchScreen: + QTest::qWait(delay); QTest::touchEvent(window, touchDevice).press(0, p1, window); QTRY_VERIFY(tapHandler->isPressed()); QTest::touchEvent(window, touchDevice).release(0, p1, window); @@ -741,6 +742,23 @@ void tst_TapHandler::singleTapDoubleTap() QTRY_COMPARE(doubleTapSpy.size(), expectedDoubleTapCount); QCOMPARE(tappedSpy.size(), 2); QCOMPARE(singleTapSpy.size(), expectedEndingSingleTapCount); + + // wait past the double-tap interval, then do it again + const auto delay = qApp->styleHints()->mouseDoubleClickInterval() + 10; + tappedSpy.clear(); + singleTapSpy.clear(); + doubleTapSpy.clear(); + + // tap once with delay + tap(p1, delay); + QCOMPARE(tappedSpy.size(), 1); + QCOMPARE(doubleTapSpy.size(), 0); + + // tap again immediately afterwards + tap(p1); + QTRY_COMPARE(doubleTapSpy.size(), expectedDoubleTapCount); + QCOMPARE(tappedSpy.size(), 2); + QCOMPARE(singleTapSpy.size(), expectedEndingSingleTapCount); } void tst_TapHandler::touchLongPress() |