diff options
author | Marc Mutz <marc.mutz@qt.io> | 2022-01-10 08:30:37 +0100 |
---|---|---|
committer | Marc Mutz <marc.mutz@qt.io> | 2022-01-15 12:29:27 +0100 |
commit | cfca4188f9d294cca9be96ae98ba0ed311be21b7 (patch) | |
tree | e0203a1df9a3217bfc83ec1e821e6062f5a597cd /tests/auto/gui/kernel | |
parent | 7d63efc16f65f98c657caa90e0d7e9b72a879ade (diff) | |
download | qtbase-cfca4188f9d294cca9be96ae98ba0ed311be21b7.tar.gz |
tests: port to new QMutableEventPoint static API
This code didn't actually use QMutableEventPoint::from(), so didn't
run into the UB that from() depended on, but it's in the way of making
QMutableEventPoint a befriendable namespace instead of a public
subclass of QEventPoint.
Replaced the QMutableEventPoint ctor that takes a timestamp, and
therefore isn't compatible with the ctors on QEventPoint, with a
static function that returns QEventPoint instead.
Port QList initialization to braced-initialization as a drive-by.
Task-number: QTBUG-99615
Pick-to: 6.3
Change-Id: If5a1dbea21cc31cdefdb640716793421c8ec0af4
Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
Diffstat (limited to 'tests/auto/gui/kernel')
-rw-r--r-- | tests/auto/gui/kernel/qtouchevent/tst_qtouchevent.cpp | 176 |
1 files changed, 89 insertions, 87 deletions
diff --git a/tests/auto/gui/kernel/qtouchevent/tst_qtouchevent.cpp b/tests/auto/gui/kernel/qtouchevent/tst_qtouchevent.cpp index 850b4522bd..cc86e866f6 100644 --- a/tests/auto/gui/kernel/qtouchevent/tst_qtouchevent.cpp +++ b/tests/auto/gui/kernel/qtouchevent/tst_qtouchevent.cpp @@ -404,11 +404,11 @@ void tst_QTouchEvent::touchDisabledByDefault() QVERIFY(!item.acceptTouchEvents()); // compose an event to the scene that is over the item - QMutableEventPoint touchPoint(0); - touchPoint.setState(QEventPoint::State::Pressed); - touchPoint.setPosition(view.mapFromScene(item.mapToScene(item.boundingRect().center()))); - touchPoint.setGlobalPosition(view.mapToGlobal(touchPoint.position().toPoint())); - touchPoint.setScenePosition(view.mapToScene(touchPoint.position().toPoint())); + QEventPoint touchPoint(0); + QMutableEventPoint::setState(touchPoint, QEventPoint::State::Pressed); + QMutableEventPoint::setPosition(touchPoint, view.mapFromScene(item.mapToScene(item.boundingRect().center()))); + QMutableEventPoint::setGlobalPosition(touchPoint, view.mapToGlobal(touchPoint.position().toPoint())); + QMutableEventPoint::setScenePosition(touchPoint, view.mapToScene(touchPoint.position().toPoint())); QTouchEvent touchEvent(QEvent::TouchBegin, touchScreenDevice, @@ -464,10 +464,10 @@ void tst_QTouchEvent::touchEventAcceptedByDefault() // compose an event to the scene that is over the item QPointF pos = view.mapFromScene(item.mapToScene(item.boundingRect().center())); - QMutableEventPoint touchPoint(0, QEventPoint::State::Pressed, - view.mapToScene(pos.toPoint()), - view.mapToGlobal(pos.toPoint())); - touchPoint.setPosition(pos); + QEventPoint touchPoint(0, QEventPoint::State::Pressed, + view.mapToScene(pos.toPoint()), + view.mapToGlobal(pos.toPoint())); + QMutableEventPoint::setPosition(touchPoint, pos); QTouchEvent touchEvent(QEvent::TouchBegin, touchScreenDevice, Qt::NoModifier, @@ -576,10 +576,10 @@ void tst_QTouchEvent::touchBeginPropagatesWhenIgnored() // compose an event to the scene that is over the grandchild QPointF pos = view.mapFromScene(grandchild.mapToScene(grandchild.boundingRect().center())); - QMutableEventPoint touchPoint(0, QEventPoint::State::Pressed, - view.mapToScene(pos.toPoint()), - view.mapToGlobal(pos.toPoint())); - touchPoint.setPosition(pos); + QEventPoint touchPoint(0, QEventPoint::State::Pressed, + view.mapToScene(pos.toPoint()), + view.mapToGlobal(pos.toPoint())); + QMutableEventPoint::setPosition(touchPoint, pos); QTouchEvent touchEvent(QEvent::TouchBegin, touchScreenDevice, Qt::NoModifier, @@ -659,10 +659,10 @@ void tst_QTouchEvent::touchUpdateAndEndNeverPropagate() // compose an event to the scene that is over the child QPointF pos = view.mapFromScene(grandchild.mapToScene(grandchild.boundingRect().center())); - QMutableEventPoint touchPoint(0, QEventPoint::State::Pressed, - view.mapToScene(pos.toPoint()), - view.mapToGlobal(pos.toPoint())); - touchPoint.setPosition(pos); + QEventPoint touchPoint(0, QEventPoint::State::Pressed, + view.mapToScene(pos.toPoint()), + view.mapToGlobal(pos.toPoint())); + QMutableEventPoint::setPosition(touchPoint, pos); QTouchEvent touchBeginEvent(QEvent::TouchBegin, touchScreenDevice, Qt::NoModifier, @@ -674,10 +674,10 @@ void tst_QTouchEvent::touchUpdateAndEndNeverPropagate() QVERIFY(!root.seenTouchBegin); // send the touch update to the child, but ignore it, it doesn't propagate - touchPoint = QMutableEventPoint(0, QEventPoint::State::Updated, - view.mapToScene(pos.toPoint()), - view.mapToGlobal(pos.toPoint())); - touchPoint.setPosition(pos); + touchPoint = QEventPoint(0, QEventPoint::State::Updated, + view.mapToScene(pos.toPoint()), + view.mapToGlobal(pos.toPoint())); + QMutableEventPoint::setPosition(touchPoint, pos); QTouchEvent touchUpdateEvent(QEvent::TouchUpdate, touchScreenDevice, Qt::NoModifier, @@ -689,10 +689,10 @@ void tst_QTouchEvent::touchUpdateAndEndNeverPropagate() QVERIFY(!root.seenTouchUpdate); // send the touch end, same thing should happen as with touch update - touchPoint = QMutableEventPoint(0, QEventPoint::State::Released, - view.mapToScene(pos.toPoint()), - view.mapToGlobal(pos.toPoint())); - touchPoint.setPosition(pos); + touchPoint = QEventPoint(0, QEventPoint::State::Released, + view.mapToScene(pos.toPoint()), + view.mapToGlobal(pos.toPoint())); + QMutableEventPoint::setPosition(touchPoint, pos); QTouchEvent touchEndEvent(QEvent::TouchEnd, touchScreenDevice, Qt::NoModifier, @@ -1027,7 +1027,7 @@ void tst_QTouchEvent::touchOnMultipleTouchscreens() // this should be translated to a TouchBegin QList<QWindowSystemInterface::TouchPoint> nativeTouchPoints = QWindowSystemInterfacePrivate::toNativeTouchPoints(QList<QEventPoint>() << - QMutableEventPoint(1234, 1, QEventPoint::State::Pressed, screenPos, screenPos, screenPos), window); + QMutableEventPoint::withTimeStamp(1234, 1, QEventPoint::State::Pressed, screenPos, screenPos, screenPos), window); QWindowSystemInterface::handleTouchEvent(window, timestamp, touchScreenDevice, nativeTouchPoints); QCoreApplication::processEvents(); QVERIFY(touchWidget.seenTouchBegin); @@ -1044,7 +1044,7 @@ void tst_QTouchEvent::touchOnMultipleTouchscreens() touchWidget.seenTouchBegin = false; nativeTouchPoints = QWindowSystemInterfacePrivate::toNativeTouchPoints(QList<QEventPoint>() << - QMutableEventPoint(1234, 10, QEventPoint::State::Pressed, screenPos, screenPos, screenPos), window); + QMutableEventPoint::withTimeStamp(1234, 10, QEventPoint::State::Pressed, screenPos, screenPos, screenPos), window); QWindowSystemInterface::handleTouchEvent(window, ++timestamp, secondaryTouchScreenDevice, nativeTouchPoints); QCoreApplication::processEvents(); QVERIFY(!touchWidget.seenTouchEnd); @@ -1059,7 +1059,7 @@ void tst_QTouchEvent::touchOnMultipleTouchscreens() touchWidget.seenTouchBegin = false; nativeTouchPoints = QWindowSystemInterfacePrivate::toNativeTouchPoints(QList<QEventPoint>() << - QMutableEventPoint(1234, 11, QEventPoint::State::Pressed, screenPos, screenPos, screenPos), window); + QMutableEventPoint::withTimeStamp(1234, 11, QEventPoint::State::Pressed, screenPos, screenPos, screenPos), window); QWindowSystemInterface::handleTouchEvent(window, ++timestamp, secondaryTouchScreenDevice, nativeTouchPoints); QCoreApplication::processEvents(); QVERIFY(!touchWidget.seenTouchEnd); @@ -1073,7 +1073,7 @@ void tst_QTouchEvent::touchOnMultipleTouchscreens() // moving the first point should translate to TouchUpdate nativeTouchPoints = QWindowSystemInterfacePrivate::toNativeTouchPoints(QList<QEventPoint>() << - QMutableEventPoint(1234, 1, QEventPoint::State::Updated, screenPos + delta, screenPos + delta, screenPos + delta), window); + QMutableEventPoint::withTimeStamp(1234, 1, QEventPoint::State::Updated, screenPos + delta, screenPos + delta, screenPos + delta), window); QWindowSystemInterface::handleTouchEvent(window, ++timestamp, touchScreenDevice, nativeTouchPoints); QCoreApplication::processEvents(); QVERIFY(touchWidget.seenTouchBegin); @@ -1088,7 +1088,7 @@ void tst_QTouchEvent::touchOnMultipleTouchscreens() // releasing the first point translates to TouchEnd nativeTouchPoints = QWindowSystemInterfacePrivate::toNativeTouchPoints(QList<QEventPoint>() << - QMutableEventPoint(1234, 1, QEventPoint::State::Released, screenPos + delta + delta, screenPos + delta + delta, screenPos + delta + delta), window); + QMutableEventPoint::withTimeStamp(1234, 1, QEventPoint::State::Released, screenPos + delta + delta, screenPos + delta + delta, screenPos + delta + delta), window); QWindowSystemInterface::handleTouchEvent(window, ++timestamp, touchScreenDevice, nativeTouchPoints); QCoreApplication::processEvents(); QVERIFY(touchWidget.seenTouchBegin); @@ -1112,8 +1112,8 @@ void tst_QTouchEvent::touchOnMultipleTouchscreens() touchWidget.touchEndPoints.clear(); nativeTouchPoints = QWindowSystemInterfacePrivate::toNativeTouchPoints(QList<QEventPoint>() << - QMutableEventPoint(1234, 10, QEventPoint::State::Released, screenPos, screenPos, screenPos) << - QMutableEventPoint(1234, 11, QEventPoint::State::Stationary, screenPos, screenPos, screenPos), window); + QMutableEventPoint::withTimeStamp(1234, 10, QEventPoint::State::Released, screenPos, screenPos, screenPos) << + QMutableEventPoint::withTimeStamp(1234, 11, QEventPoint::State::Stationary, screenPos, screenPos, screenPos), window); QWindowSystemInterface::handleTouchEvent(window, ++timestamp, secondaryTouchScreenDevice, nativeTouchPoints); QCoreApplication::processEvents(); QVERIFY(touchWidget.seenTouchBegin); @@ -1127,7 +1127,7 @@ void tst_QTouchEvent::touchOnMultipleTouchscreens() touchWidget.seenTouchEnd = false; nativeTouchPoints = QWindowSystemInterfacePrivate::toNativeTouchPoints(QList<QEventPoint>() << - QMutableEventPoint(1234, 11, QEventPoint::State::Released, screenPos + delta + delta, + QMutableEventPoint::withTimeStamp(1234, 11, QEventPoint::State::Released, screenPos + delta + delta, screenPos + delta + delta, screenPos + delta + delta), window); QWindowSystemInterface::handleTouchEvent(window, ++timestamp, secondaryTouchScreenDevice, nativeTouchPoints); QCoreApplication::processEvents(); @@ -1178,18 +1178,19 @@ void tst_QTouchEvent::multiPointRawEventTranslationOnTouchPad() const QPointF centerScreenPos = touchWidget.mapToGlobal(centerPos.toPoint()); ulong timestamp = 0; - QList<QMutableEventPoint> rawTouchPoints; - rawTouchPoints.append(QMutableEventPoint(0)); - rawTouchPoints.append(QMutableEventPoint(1)); + QList<QEventPoint> rawTouchPoints = { + QEventPoint(0), + QEventPoint(1), + }; // generate TouchBegin on leftWidget only { - QMutableEventPoint &tp0 = rawTouchPoints[0]; - tp0.setState(QEventPoint::State::Pressed); - tp0.setGlobalPosition(leftScreenPos); - QMutableEventPoint & tp1 = rawTouchPoints[1]; - tp1.setState(QEventPoint::State::Pressed); - tp1.setGlobalPosition(rightScreenPos); + QEventPoint &tp0 = rawTouchPoints[0]; + QMutableEventPoint::setState(tp0, QEventPoint::State::Pressed); + QMutableEventPoint::setGlobalPosition(tp0, leftScreenPos); + QEventPoint &tp1 = rawTouchPoints[1]; + QMutableEventPoint::setState(tp1, QEventPoint::State::Pressed); + QMutableEventPoint::setGlobalPosition(tp1, rightScreenPos); } QWindow *window = touchWidget.windowHandle(); QList<QWindowSystemInterface::TouchPoint> nativeTouchPoints = @@ -1250,10 +1251,10 @@ void tst_QTouchEvent::multiPointRawEventTranslationOnTouchPad() } // generate TouchUpdate on leftWidget - rawTouchPoints[0].setState(QEventPoint::State::Updated); - rawTouchPoints[0].setGlobalPosition(centerScreenPos); - rawTouchPoints[1].setState(QEventPoint::State::Updated); - rawTouchPoints[1].setGlobalPosition(centerScreenPos); + QMutableEventPoint::setState(rawTouchPoints[0], QEventPoint::State::Updated); + QMutableEventPoint::setGlobalPosition(rawTouchPoints[0], centerScreenPos); + QMutableEventPoint::setState(rawTouchPoints[1], QEventPoint::State::Updated); + QMutableEventPoint::setGlobalPosition(rawTouchPoints[1], centerScreenPos); nativeTouchPoints = QWindowSystemInterfacePrivate::toNativeTouchPoints(rawTouchPoints, window); QWindowSystemInterface::handleTouchEvent(window, ++timestamp, touchPadDevice, nativeTouchPoints); @@ -1314,8 +1315,8 @@ void tst_QTouchEvent::multiPointRawEventTranslationOnTouchPad() // generate TouchEnd on leftWidget // both touchpoints are still at centerScreenPos - rawTouchPoints[0].setState(QEventPoint::State::Released); - rawTouchPoints[1].setState(QEventPoint::State::Released); + QMutableEventPoint::setState(rawTouchPoints[0], QEventPoint::State::Released); + QMutableEventPoint::setState(rawTouchPoints[1], QEventPoint::State::Released); nativeTouchPoints = QWindowSystemInterfacePrivate::toNativeTouchPoints(rawTouchPoints, window); QWindowSystemInterface::handleTouchEvent(window, ++timestamp, touchPadDevice, nativeTouchPoints); @@ -1392,17 +1393,17 @@ void tst_QTouchEvent::basicRawEventTranslationOfIds() screenPos << touchWidget.mapToGlobal(pos[i].toPoint()); } QPointF delta(10, 10); - QList<QMutableEventPoint> rawTouchPoints; + QList<QEventPoint> rawTouchPoints; // Press both points, this should be translated to a TouchBegin for (int i = 0; i < 2; ++i) { - QMutableEventPoint rawTouchPoint(i); - rawTouchPoint.setState(QEventPoint::State::Pressed); - rawTouchPoint.setGlobalPosition(screenPos[i]); + QEventPoint rawTouchPoint(i); + QMutableEventPoint::setState(rawTouchPoint, QEventPoint::State::Pressed); + QMutableEventPoint::setGlobalPosition(rawTouchPoint, screenPos[i]); rawTouchPoints << rawTouchPoint; } - QMutableEventPoint &p0 = rawTouchPoints[0]; - QMutableEventPoint &p1 = rawTouchPoints[1]; + QEventPoint &p0 = rawTouchPoints[0]; + QEventPoint &p1 = rawTouchPoints[1]; ulong timestamp = 1234; QWindow *window = touchWidget.windowHandle(); @@ -1424,8 +1425,8 @@ void tst_QTouchEvent::basicRawEventTranslationOfIds() // moving the point should translate to TouchUpdate for (int i = 0; i < rawTouchPoints.count(); ++i) { auto &p = rawTouchPoints[i]; - p.setState(QEventPoint::State::Updated); - p.setGlobalPosition(p.globalPosition() + delta); + QMutableEventPoint::setState(p, QEventPoint::State::Updated); + QMutableEventPoint::setGlobalPosition(p, p.globalPosition() + delta); } nativeTouchPoints = QWindowSystemInterfacePrivate::toNativeTouchPoints(rawTouchPoints, window); @@ -1439,8 +1440,8 @@ void tst_QTouchEvent::basicRawEventTranslationOfIds() QCOMPARE(touchWidget.touchUpdatePoints.at(1).id(), 1); // release last point - p0.setState(QEventPoint::State::Stationary); - p1.setState(QEventPoint::State::Released); + QMutableEventPoint::setState(p0, QEventPoint::State::Stationary); + QMutableEventPoint::setState(p1, QEventPoint::State::Released); nativeTouchPoints = QWindowSystemInterfacePrivate::toNativeTouchPoints(rawTouchPoints, window); @@ -1454,8 +1455,8 @@ void tst_QTouchEvent::basicRawEventTranslationOfIds() QCOMPARE(touchWidget.touchUpdatePoints[1].id(), 1); // Press last point again, id should increase - p1.setState(QEventPoint::State::Pressed); - p1.setId(42); // new id + QMutableEventPoint::setState(p1, QEventPoint::State::Pressed); + QMutableEventPoint::setId(p1, 42); // new id nativeTouchPoints = QWindowSystemInterfacePrivate::toNativeTouchPoints(rawTouchPoints, window); QWindowSystemInterface::handleTouchEvent(window, ++timestamp, touchScreenDevice, nativeTouchPoints); @@ -1468,8 +1469,8 @@ void tst_QTouchEvent::basicRawEventTranslationOfIds() QCOMPARE(touchWidget.touchUpdatePoints[1].id(), 42); // release everything - p0.setState(QEventPoint::State::Released); - p1.setState(QEventPoint::State::Released); + QMutableEventPoint::setState(p0, QEventPoint::State::Released); + QMutableEventPoint::setState(p1, QEventPoint::State::Released); nativeTouchPoints = QWindowSystemInterfacePrivate::toNativeTouchPoints(rawTouchPoints, window); QWindowSystemInterface::handleTouchEvent(window, ++timestamp, touchScreenDevice, nativeTouchPoints); @@ -1562,23 +1563,23 @@ void tst_QTouchEvent::deleteInEventHandler() view.resize(200, 200); view.fitInView(scene.sceneRect()); - QMutableEventPoint touchPoint(0); - touchPoint.setState(QEventPoint::State::Pressed); - touchPoint.setPosition(view.mapFromScene(child1->mapToScene(child1->boundingRect().center()))); - touchPoint.setGlobalPosition(view.mapToGlobal(touchPoint.position().toPoint())); - touchPoint.setScenePosition(view.mapToScene(touchPoint.position().toPoint())); + QEventPoint touchPoint(0); + QMutableEventPoint::setState(touchPoint, QEventPoint::State::Pressed); + QMutableEventPoint::setPosition(touchPoint, view.mapFromScene(child1->mapToScene(child1->boundingRect().center()))); + QMutableEventPoint::setGlobalPosition(touchPoint, view.mapToGlobal(touchPoint.position().toPoint())); + QMutableEventPoint::setScenePosition(touchPoint, view.mapToScene(touchPoint.position().toPoint())); QTouchEvent touchBeginEvent(QEvent::TouchBegin, touchScreenDevice, Qt::NoModifier, {touchPoint}); - touchPoint.detach(); - touchPoint.setState(QEventPoint::State::Updated); + QMutableEventPoint::detach(touchPoint); + QMutableEventPoint::setState(touchPoint, QEventPoint::State::Updated); QTouchEvent touchUpdateEvent(QEvent::TouchUpdate, touchScreenDevice, Qt::NoModifier, {touchPoint}); - touchPoint.detach(); - touchPoint.setState(QEventPoint::State::Released); + QMutableEventPoint::detach(touchPoint); + QMutableEventPoint::setState(touchPoint, QEventPoint::State::Released); QTouchEvent touchEndEvent(QEvent::TouchEnd, touchScreenDevice, Qt::NoModifier, @@ -1658,16 +1659,17 @@ void tst_QTouchEvent::deleteInRawEventTranslation() QPointF rightScreenPos = rightWidget->mapToGlobal(rightPos.toPoint()); ulong timestamp = 0; - QList<QMutableEventPoint> rawTouchPoints; - rawTouchPoints.append(QMutableEventPoint(0)); - rawTouchPoints.append(QMutableEventPoint(1)); - rawTouchPoints.append(QMutableEventPoint(2)); - rawTouchPoints[0].setState(QEventPoint::State::Pressed); - rawTouchPoints[0].setGlobalPosition(leftScreenPos); - rawTouchPoints[1].setState(QEventPoint::State::Pressed); - rawTouchPoints[1].setGlobalPosition(centerScreenPos); - rawTouchPoints[2].setState(QEventPoint::State::Pressed); - rawTouchPoints[2].setGlobalPosition(rightScreenPos); + QList<QEventPoint> rawTouchPoints = { + QEventPoint(0), + QEventPoint(1), + QEventPoint(2), + }; + QMutableEventPoint::setState(rawTouchPoints[0], QEventPoint::State::Pressed); + QMutableEventPoint::setGlobalPosition(rawTouchPoints[0], leftScreenPos); + QMutableEventPoint::setState(rawTouchPoints[1], QEventPoint::State::Pressed); + QMutableEventPoint::setGlobalPosition(rawTouchPoints[1], centerScreenPos); + QMutableEventPoint::setState(rawTouchPoints[2], QEventPoint::State::Pressed); + QMutableEventPoint::setGlobalPosition(rawTouchPoints[2], rightScreenPos); // generate begin events on all widgets, the left widget should die QWindow *window = touchWidget.windowHandle(); @@ -1680,18 +1682,18 @@ void tst_QTouchEvent::deleteInRawEventTranslation() QVERIFY(!rightWidget.isNull()); // generate update events on all widget, the center widget should die - rawTouchPoints[0].setState(QEventPoint::State::Updated); - rawTouchPoints[1].setState(QEventPoint::State::Updated); - rawTouchPoints[2].setState(QEventPoint::State::Updated); + QMutableEventPoint::setState(rawTouchPoints[0], QEventPoint::State::Updated); + QMutableEventPoint::setState(rawTouchPoints[1], QEventPoint::State::Updated); + QMutableEventPoint::setState(rawTouchPoints[2], QEventPoint::State::Updated); nativeTouchPoints = QWindowSystemInterfacePrivate::toNativeTouchPoints(rawTouchPoints, window); QWindowSystemInterface::handleTouchEvent(window, ++timestamp, touchScreenDevice, nativeTouchPoints); QCoreApplication::processEvents(); // generate end events on all widget, the right widget should die - rawTouchPoints[0].setState(QEventPoint::State::Released); - rawTouchPoints[1].setState(QEventPoint::State::Released); - rawTouchPoints[2].setState(QEventPoint::State::Released); + QMutableEventPoint::setState(rawTouchPoints[0], QEventPoint::State::Released); + QMutableEventPoint::setState(rawTouchPoints[1], QEventPoint::State::Released); + QMutableEventPoint::setState(rawTouchPoints[2], QEventPoint::State::Released); nativeTouchPoints = QWindowSystemInterfacePrivate::toNativeTouchPoints(rawTouchPoints, window); QWindowSystemInterface::handleTouchEvent(window, ++timestamp, touchScreenDevice, nativeTouchPoints); |