diff options
Diffstat (limited to 'tests/auto/quick/qquickmultipointtoucharea')
-rw-r--r-- | tests/auto/quick/qquickmultipointtoucharea/data/nestedMouseArea.qml | 26 | ||||
-rw-r--r-- | tests/auto/quick/qquickmultipointtoucharea/tst_qquickmultipointtoucharea.cpp | 18 |
2 files changed, 44 insertions, 0 deletions
diff --git a/tests/auto/quick/qquickmultipointtoucharea/data/nestedMouseArea.qml b/tests/auto/quick/qquickmultipointtoucharea/data/nestedMouseArea.qml new file mode 100644 index 0000000000..7ca3f187d6 --- /dev/null +++ b/tests/auto/quick/qquickmultipointtoucharea/data/nestedMouseArea.qml @@ -0,0 +1,26 @@ +import QtQuick 2.12 + +Item { + id: root + width: 300; height: 300 + property point mptaPoint + property point maPoint + MultiPointTouchArea { + anchors.fill : parent + onPressed: function(touchPoints) { + root.mptaPoint = Qt.point(touchPoints[0].x, touchPoints[0].y) + } + MouseArea { + id: ma + width: 100; height: 100 + anchors.centerIn: parent + onPressed: function(mouse) { + root.maPoint = Qt.point(mouse.x, mouse.y) + } + } + Rectangle { + anchors.fill: ma + border.color: "grey" + } + } +} diff --git a/tests/auto/quick/qquickmultipointtoucharea/tst_qquickmultipointtoucharea.cpp b/tests/auto/quick/qquickmultipointtoucharea/tst_qquickmultipointtoucharea.cpp index a9d557915a..3aff9a293a 100644 --- a/tests/auto/quick/qquickmultipointtoucharea/tst_qquickmultipointtoucharea.cpp +++ b/tests/auto/quick/qquickmultipointtoucharea/tst_qquickmultipointtoucharea.cpp @@ -78,6 +78,7 @@ private slots: void cancel(); void stationaryTouchWithChangingPressure(); void nestedPinchAreaMouse(); + void touchFiltering(); private: QQuickView *createAndShowView(const QString &file); @@ -1456,6 +1457,23 @@ void tst_QQuickMultiPointTouchArea::nestedPinchAreaMouse() QCOMPARE(mpta->property("releasedCount").toInt(), 1); } +void tst_QQuickMultiPointTouchArea::touchFiltering() // QTBUG-74028 +{ + QScopedPointer<QQuickView> window(createAndShowView("nestedMouseArea.qml")); + QVERIFY(window->rootObject() != nullptr); + QQuickMultiPointTouchArea *mpta = window->rootObject()->findChild<QQuickMultiPointTouchArea*>(); + QVERIFY(mpta); + QQuickMouseArea *ma = window->rootObject()->findChild<QQuickMouseArea*>(); + QVERIFY(ma); + + QSignalSpy mptaSpy(mpta, &QQuickMultiPointTouchArea::pressed); + const QPoint pt = window->rootObject()->boundingRect().center().toPoint(); + QTest::touchEvent(window.data(), device).press(1, pt); + QQuickTouchUtils::flush(window.data()); + QTRY_COMPARE(mpta->parentItem()->property("mptaPoint").toPoint(), pt); + QCOMPARE(mpta->parentItem()->property("maPoint").toPoint(), ma->boundingRect().center().toPoint()); + QCOMPARE(mptaSpy.count(), 1); +} QTEST_MAIN(tst_QQuickMultiPointTouchArea) |