aboutsummaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
authorShawn Rutledge <shawn.rutledge@qt.io>2020-10-27 10:46:15 +0100
committerShawn Rutledge <shawn.rutledge@qt.io>2020-10-27 13:30:25 +0100
commit9113bdba5adb06bbc1d644e69cf9ea97e4a978b2 (patch)
treefff4e194bb5cf9e669320d7db25947960d449fe5 /tests
parent7b067ae4f7b3093955bad52a694d5427b0ee588e (diff)
Fix tst_PointerHandlers::touchEventDelivery
Task-number: QTBUG-86729 Change-Id: I47a0a4aad7cff956b2ebd450870d625f817690d4 Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
Diffstat (limited to 'tests')
-rw-r--r--tests/auto/quick/pointerhandlers/qquickpointerhandler/BLACKLIST2
-rw-r--r--tests/auto/quick/pointerhandlers/qquickpointerhandler/tst_qquickpointerhandler.cpp52
2 files changed, 34 insertions, 20 deletions
diff --git a/tests/auto/quick/pointerhandlers/qquickpointerhandler/BLACKLIST b/tests/auto/quick/pointerhandlers/qquickpointerhandler/BLACKLIST
index 497f8fe62f..8d3b25c7ac 100644
--- a/tests/auto/quick/pointerhandlers/qquickpointerhandler/BLACKLIST
+++ b/tests/auto/quick/pointerhandlers/qquickpointerhandler/BLACKLIST
@@ -1,6 +1,4 @@
[mouseEventDelivery]
macos # QTBUG-86729
-[touchEventDelivery]
-macos # QTBUG-86729
[touchReleaseOutside]
macos # QTBUG-86729
diff --git a/tests/auto/quick/pointerhandlers/qquickpointerhandler/tst_qquickpointerhandler.cpp b/tests/auto/quick/pointerhandlers/qquickpointerhandler/tst_qquickpointerhandler.cpp
index a4ff2477bb..8d0d072f61 100644
--- a/tests/auto/quick/pointerhandlers/qquickpointerhandler/tst_qquickpointerhandler.cpp
+++ b/tests/auto/quick/pointerhandlers/qquickpointerhandler/tst_qquickpointerhandler.cpp
@@ -112,25 +112,25 @@ public:
}
void mousePressEvent(QMouseEvent *event)
{
- qCDebug(lcPointerTests) << event;
+ qCDebug(lcPointerTests) << event << "will accept?" << acceptMouse;
eventList.append(Event(Event::MouseDestination, event->type(), QEventPoint::State::Pressed, grabTransition(acceptMouse, QEventPoint::State::Pressed), event->position().toPoint(), event->scenePosition()));
event->setAccepted(acceptMouse);
}
void mouseMoveEvent(QMouseEvent *event)
{
- qCDebug(lcPointerTests) << event;
+ qCDebug(lcPointerTests) << event << "will accept?" << acceptMouse;
eventList.append(Event(Event::MouseDestination, event->type(), QEventPoint::State::Updated, grabTransition(acceptMouse, QEventPoint::State::Updated), event->position().toPoint(), event->scenePosition()));
event->setAccepted(acceptMouse);
}
void mouseReleaseEvent(QMouseEvent *event)
{
- qCDebug(lcPointerTests) << event;
+ qCDebug(lcPointerTests) << event << "will accept?" << acceptMouse;
eventList.append(Event(Event::MouseDestination, event->type(), QEventPoint::State::Released, grabTransition(acceptMouse, QEventPoint::State::Released), event->position().toPoint(), event->scenePosition()));
event->setAccepted(acceptMouse);
}
void mouseDoubleClickEvent(QMouseEvent *event)
{
- qCDebug(lcPointerTests) << event;
+ qCDebug(lcPointerTests) << event << "will accept?" << acceptMouse;
eventList.append(Event(Event::MouseDestination, event->type(), QEventPoint::State::Pressed, grabTransition(acceptMouse, QEventPoint::State::Pressed), event->position().toPoint(), event->scenePosition()));
event->setAccepted(acceptMouse);
}
@@ -317,11 +317,17 @@ void tst_PointerHandlers::touchEventDelivery()
EventItem *eventItem1 = window->rootObject()->findChild<EventItem*>("eventItem1");
QVERIFY(eventItem1);
+ auto devPriv = QPointingDevicePrivate::get(touchDevice);
+ // In Qt 5, QQItem::acceptTouchEvents(true) was the default, but not in Qt 6.
+ // This test is written to expect touch events on eventItem1.
+ // acceptTouch = false just tells it to reject the events as they come.
+ eventItem1->setAcceptTouchEvents(true);
- // Do not accept anything
+ // Reject incoming mouse and touch events
QPoint p1 = QPoint(20, 20);
QTest::touchEvent(window, touchDevice).press(0, p1, window);
QQuickTouchUtils::flush(window);
+ qCDebug(lcPointerTests) << "events from touch press" << eventItem1->eventList;
QTRY_COMPARE(eventItem1->eventList.size(), synthMouse ? 3 : 2);
QCOMPARE_EVENT(0, Event::HandlerDestination, QEvent::Pointer, QEventPoint::State::Pressed, NoGrab);
QCOMPARE_EVENT(1, Event::TouchDestination, QEvent::TouchBegin, QEventPoint::State::Pressed, NoGrab);
@@ -330,15 +336,16 @@ void tst_PointerHandlers::touchEventDelivery()
p1 += QPoint(10, 0);
QTest::touchEvent(window, touchDevice).move(0, p1, window);
QQuickTouchUtils::flush(window);
- QCOMPARE(eventItem1->eventList.size(), synthMouse ? 4 : 3);
- QCOMPARE_EVENT(eventItem1->eventList.size() - 1, Event::HandlerDestination, QEvent::Pointer, QEventPoint::State::Updated, NoGrab);
+ qCDebug(lcPointerTests) << "events after touch move" << eventItem1->eventList;
+ QCOMPARE(eventItem1->eventList.size(), synthMouse ? 3 : 2); // no grabs -> no updates
QTest::touchEvent(window, touchDevice).release(0, p1, window);
QQuickTouchUtils::flush(window);
- QCOMPARE(eventItem1->eventList.size(), synthMouse ? 5 : 4);
+ qCDebug(lcPointerTests) << "events after touch release" << eventItem1->eventList;
+ QCOMPARE(eventItem1->eventList.size(), synthMouse ? 4 : 3);
QCOMPARE_EVENT(eventItem1->eventList.size() - 1, Event::HandlerDestination, QEvent::Pointer, QEventPoint::State::Released, NoGrab);
eventItem1->eventList.clear();
- // Accept touch
+ // Accept touch events only
eventItem1->acceptTouch = true;
p1 = QPoint(20, 20);
QTest::touchEvent(window, touchDevice).press(0, p1, window);
@@ -346,7 +353,6 @@ void tst_PointerHandlers::touchEventDelivery()
QCOMPARE(eventItem1->eventList.size(), 2);
QCOMPARE_EVENT(0, Event::HandlerDestination, QEvent::Pointer, QEventPoint::State::Pressed, NoGrab);
QCOMPARE_EVENT(1, Event::TouchDestination, QEvent::TouchBegin, QEventPoint::State::Pressed, QPointingDevice::GrabExclusive);
- auto devPriv = QPointingDevicePrivate::get(touchDevice);
QCOMPARE(devPriv->pointById(0)->exclusiveGrabber, eventItem1);
p1 += QPoint(10, 0);
QTest::touchEvent(window, touchDevice).move(0, p1, window);
@@ -364,19 +370,20 @@ void tst_PointerHandlers::touchEventDelivery()
// wait to avoid getting a double click event
QTest::qWait(qApp->styleHints()->mouseDoubleClickInterval() + 10);
- // Accept mouse
+ // Accept mouse events only
eventItem1->acceptTouch = false;
eventItem1->acceptMouse = true;
eventItem1->setAcceptedMouseButtons(Qt::LeftButton);
p1 = QPoint(20, 20);
QTest::touchEvent(window, touchDevice).press(0, p1, window);
QQuickTouchUtils::flush(window);
+ qCDebug(lcPointerTests) << "events after touch press" << eventItem1->eventList;
QCOMPARE(eventItem1->eventList.size(), synthMouse ? 3 : 2);
QCOMPARE_EVENT(0, Event::HandlerDestination, QEvent::Pointer, QEventPoint::State::Pressed, NoGrab);
QCOMPARE_EVENT(1, Event::TouchDestination, QEvent::TouchBegin, QEventPoint::State::Pressed, NoGrab);
if (synthMouse)
QCOMPARE_EVENT(2, Event::MouseDestination, QEvent::MouseButtonPress, QEventPoint::State::Pressed, QPointingDevice::GrabExclusive);
- QCOMPARE(window->mouseGrabberItem(), synthMouse ? eventItem1 : nullptr);
+ QCOMPARE(devPriv->pointById(0)->exclusiveGrabber, synthMouse ? eventItem1 : nullptr);
QPointF localPos = eventItem1->mapFromScene(p1);
QPointF scenePos = p1; // item is at 0,0
@@ -390,7 +397,8 @@ void tst_PointerHandlers::touchEventDelivery()
p1 += QPoint(10, 0);
QTest::touchEvent(window, touchDevice).move(0, p1, window);
QQuickTouchUtils::flush(window);
- QCOMPARE(eventItem1->eventList.size(), synthMouse ? 6 : 3);
+ qCDebug(lcPointerTests) << "events after touch move" << eventItem1->eventList;
+ QCOMPARE(eventItem1->eventList.size(), synthMouse ? 6 : 2);
if (synthMouse) {
QCOMPARE_EVENT(3, Event::HandlerDestination, QEvent::Pointer, QEventPoint::State::Updated, NoGrab);
QCOMPARE_EVENT(4, Event::TouchDestination, QEvent::TouchUpdate, QEventPoint::State::Updated, NoGrab);
@@ -398,14 +406,15 @@ void tst_PointerHandlers::touchEventDelivery()
}
QTest::touchEvent(window, touchDevice).release(0, p1, window);
QQuickTouchUtils::flush(window);
- QCOMPARE(eventItem1->eventList.size(), synthMouse ? 10 : 4);
+ qCDebug(lcPointerTests) << "events after touch release" << eventItem1->eventList;
+ QCOMPARE(eventItem1->eventList.size(), synthMouse ? 10 : 3);
if (synthMouse) {
QCOMPARE_EVENT(6, Event::HandlerDestination, QEvent::Pointer, QEventPoint::State::Released, NoGrab);
QCOMPARE_EVENT(7, Event::TouchDestination, QEvent::TouchEnd, QEventPoint::State::Released, NoGrab);
QCOMPARE_EVENT(8, Event::MouseDestination, QEvent::MouseButtonRelease, QEventPoint::State::Released, NoGrab);
QCOMPARE_EVENT(9, Event::MouseDestination, QEvent::UngrabMouse, QEventPoint::State::Released, QPointingDevice::UngrabExclusive);
} else {
- QCOMPARE_EVENT(3, Event::HandlerDestination, QEvent::Pointer, QEventPoint::State::Released, NoGrab);
+ QCOMPARE_EVENT(2, Event::HandlerDestination, QEvent::Pointer, QEventPoint::State::Released, NoGrab);
}
eventItem1->eventList.clear();
@@ -419,6 +428,7 @@ void tst_PointerHandlers::touchEventDelivery()
p1 = QPoint(20, 20);
QTest::touchEvent(window, touchDevice).press(0, p1, window);
QQuickTouchUtils::flush(window);
+ qCDebug(lcPointerTests) << "events after touch press" << eventItem1->eventList;
QCOMPARE(eventItem1->eventList.size(), synthMouse ? 3 : 2);
QCOMPARE_EVENT(0, Event::HandlerDestination, QEvent::Pointer, QEventPoint::State::Pressed, NoGrab);
QCOMPARE_EVENT(1, Event::TouchDestination, QEvent::TouchBegin, QEventPoint::State::Pressed, NoGrab);
@@ -428,16 +438,18 @@ void tst_PointerHandlers::touchEventDelivery()
p1 += QPoint(10, 0);
QTest::touchEvent(window, touchDevice).move(0, p1, window);
QQuickTouchUtils::flush(window);
- QCOMPARE(eventItem1->eventList.size(), synthMouse ? 4 : 3);
+ qCDebug(lcPointerTests) << "events after touch move" << eventItem1->eventList;
+ QCOMPARE(eventItem1->eventList.size(), synthMouse ? 3 : 2);
QTest::touchEvent(window, touchDevice).release(0, p1, window);
QQuickTouchUtils::flush(window);
- QCOMPARE(eventItem1->eventList.size(), synthMouse ? 5 : 4);
+ qCDebug(lcPointerTests) << "events after touch release" << eventItem1->eventList;
+ QCOMPARE(eventItem1->eventList.size(), synthMouse ? 4 : 3);
eventItem1->eventList.clear();
// wait to avoid getting a double click event
QTest::qWait(qApp->styleHints()->mouseDoubleClickInterval() + 10);
- // Accept touch
+ // Accept touch events
eventItem1->acceptTouch = true;
eventItem1->setAcceptedMouseButtons(Qt::LeftButton);
p1 = QPoint(20, 20);
@@ -460,6 +472,9 @@ void tst_PointerHandlers::touchEventDelivery()
eventItem1->eventList.clear();
// Accept pointer events
+ // TODO acceptPointer currently does nothing unique, but we could
+ // re-enable this test if we define the best way to handle generic QPointerEvents in Item subclasses
+ /*
eventItem1->acceptPointer = true;
eventItem1->grabPointer = true;
p1 = QPoint(20, 20);
@@ -480,6 +495,7 @@ void tst_PointerHandlers::touchEventDelivery()
QCOMPARE_EVENT(3, Event::HandlerDestination, QEvent::Pointer, QEventPoint::State::Released, QPointingDevice::GrabExclusive);
QCOMPARE_EVENT(4, Event::HandlerDestination, QEvent::None, QEventPoint::State::Released, QPointingDevice::UngrabExclusive);
eventItem1->eventList.clear();
+ */
}
void tst_PointerHandlers::mouseEventDelivery()