diff --git a/tests/auto/quickwidgets/qquickwidget/data/mouse.qml b/tests/auto/quickwidgets/qquickwidget/data/mouse.qml index 5d1c6e8443..25a7329a08 100644 --- a/tests/auto/quickwidgets/qquickwidget/data/mouse.qml +++ b/tests/auto/quickwidgets/qquickwidget/data/mouse.qml @@ -7,8 +7,10 @@ Rectangle { property bool wasClicked: false property bool wasDoubleClicked: false property bool wasMoved: false + color: ma.pressed ? "wheat" : "lightsteelblue" MouseArea { + id: ma anchors.fill: parent hoverEnabled: true onClicked: wasClicked = true diff --git a/tests/auto/quickwidgets/qquickwidget/tst_qquickwidget.cpp b/tests/auto/quickwidgets/qquickwidget/tst_qquickwidget.cpp index c569447357..999bf76031 100644 --- a/tests/auto/quickwidgets/qquickwidget/tst_qquickwidget.cpp +++ b/tests/auto/quickwidgets/qquickwidget/tst_qquickwidget.cpp @@ -10,6 +10,7 @@ #include #include #include +#include #include #include #include @@ -123,6 +124,7 @@ private slots: void mouseEventWindowPos(); void synthMouseFromTouch_data(); void synthMouseFromTouch(); + void touchTapMouseArea(); void tabKey(); void resizeOverlay(); void controls(); @@ -613,6 +615,7 @@ void tst_qquickwidget::synthMouseFromTouch() QTest::touchEvent(&window, device).move(0, p2, &window); QTest::touchEvent(&window, device).release(0, p2, &window); + qCDebug(lcTests) << item->m_touchEvents << item->m_mouseEvents; QCOMPARE(item->m_touchEvents.size(), synthMouse ? 0 : (acceptTouch ? 3 : 1)); QCOMPARE(item->m_mouseEvents.size(), synthMouse ? 3 : 0); QCOMPARE(childView->m_mouseEvents.size(), 0); @@ -620,6 +623,33 @@ void tst_qquickwidget::synthMouseFromTouch() QCOMPARE(ev, Qt::MouseEventSynthesizedByQt); } +void tst_qquickwidget::touchTapMouseArea() +{ + QWidget window; + window.resize(100, 100); + window.setObjectName("window widget"); + window.setAttribute(Qt::WA_AcceptTouchEvents); + QVERIFY(QCoreApplication::testAttribute(Qt::AA_SynthesizeMouseForUnhandledTouchEvents)); + QQuickWidget *quick = new QQuickWidget(&window); + quick->setSource(testFileUrl("mouse.qml")); + quick->move(50, 50); + quick->setObjectName("quick widget"); + window.show(); + QVERIFY(QTest::qWaitForWindowExposed(&window)); + QQuickItem *rootItem = quick->rootObject(); + QVERIFY(rootItem); + QQuickMouseArea *ma = rootItem->findChild(); + QVERIFY(ma); + + QPoint p1 = QPoint(70, 70); + QTest::touchEvent(&window, device).press(0, p1, &window); + QTRY_COMPARE(ma->pressed(), true); + QTest::touchEvent(&window, device).move(0, p1, &window); + QTest::touchEvent(&window, device).release(0, p1, &window); + QTRY_COMPARE(ma->pressed(), false); + QVERIFY(rootItem->property("wasClicked").toBool()); +} + void tst_qquickwidget::tabKey() { if (QGuiApplication::styleHints()->tabFocusBehavior() != Qt::TabFocusAllControls)