diff --git a/src/quick/items/qquickmousearea.cpp b/src/quick/items/qquickmousearea.cpp index 64c57e2c09..44cbec55b8 100644 --- a/src/quick/items/qquickmousearea.cpp +++ b/src/quick/items/qquickmousearea.cpp @@ -905,6 +905,7 @@ void QQuickMouseArea::ungrabMouse() emit pressedButtonsChanged(); if (d->hovered && !isUnderMouse()) { + qCDebug(lcHoverTrace) << "losing hover: not under the mouse"; d->hovered = false; emit hoveredChanged(); } @@ -969,6 +970,7 @@ bool QQuickMouseArea::sendMouseEvent(QMouseEvent *event) emit pressedChanged(); emit containsPressChanged(); if (d->hovered) { + qCDebug(lcHoverTrace) << "losing hover: button released"; d->hovered = false; emit hoveredChanged(); } diff --git a/tests/auto/quick/touchmouse/BLACKLIST b/tests/auto/quick/touchmouse/BLACKLIST index 214da65864..9afc86c2fe 100644 --- a/tests/auto/quick/touchmouse/BLACKLIST +++ b/tests/auto/quick/touchmouse/BLACKLIST @@ -8,6 +8,3 @@ windows gcc developer-build # QTBUG-74517 [touchButtonOnFlickable] windows gcc developer-build - -[hoverEnabled] -* # QTBUG-86729 diff --git a/tests/auto/quick/touchmouse/tst_touchmouse.cpp b/tests/auto/quick/touchmouse/tst_touchmouse.cpp index 4492d35680..d7820996be 100644 --- a/tests/auto/quick/touchmouse/tst_touchmouse.cpp +++ b/tests/auto/quick/touchmouse/tst_touchmouse.cpp @@ -1440,6 +1440,7 @@ void tst_TouchMouse::hoverEnabled() // QTBUG-40856 QQuickView window; QVERIFY(QQuickTest::showView(window, testFileUrl("hoverMouseAreas.qml"))); QQuickItem *root = window.rootObject(); + auto deliveryAgent = QQuickWindowPrivate::get(&window)->deliveryAgentPrivate(); QQuickMouseArea *mouseArea1 = root->findChild("mouseArea1"); QVERIFY(mouseArea1 != nullptr); @@ -1467,6 +1468,7 @@ void tst_TouchMouse::hoverEnabled() // QTBUG-40856 // ------------------------- Touch click on mouseArea1 QTest::touchEvent(&window, device).press(0, p1, &window); + deliveryAgent->flushFrameSynchronousEvents(&window); QCOMPARE(enterSpy1.size(), 1); QCOMPARE(enterSpy2.size(), 0); @@ -1475,37 +1477,42 @@ void tst_TouchMouse::hoverEnabled() // QTBUG-40856 QVERIFY(!mouseArea2->hovered()); QTest::touchEvent(&window, device).release(0, p1, &window); + deliveryAgent->flushFrameSynchronousEvents(&window); QVERIFY(clickSpy1.size() == 1); QVERIFY(mouseArea1->hovered()); QVERIFY(!mouseArea2->hovered()); // ------------------------- Touch click on mouseArea2 QTest::touchEvent(&window, device).press(0, p2, &window); + deliveryAgent->flushFrameSynchronousEvents(&window); - QVERIFY(mouseArea1->hovered()); + QVERIFY(!mouseArea1->hovered()); QVERIFY(mouseArea2->hovered()); QVERIFY(mouseArea2->pressed()); QCOMPARE(enterSpy1.size(), 1); QCOMPARE(enterSpy2.size(), 1); QTest::touchEvent(&window, device).release(0, p2, &window); + deliveryAgent->flushFrameSynchronousEvents(&window); QVERIFY(clickSpy2.size() == 1); - QVERIFY(mouseArea1->hovered()); + QVERIFY(!mouseArea1->hovered()); QVERIFY(!mouseArea2->hovered()); - QCOMPARE(exitSpy1.size(), 0); + QCOMPARE(exitSpy1.size(), 1); QCOMPARE(exitSpy2.size(), 1); // ------------------------- Another touch click on mouseArea1 QTest::touchEvent(&window, device).press(0, p1, &window); + deliveryAgent->flushFrameSynchronousEvents(&window); - QCOMPARE(enterSpy1.size(), 1); + QCOMPARE(enterSpy1.size(), 2); QCOMPARE(enterSpy2.size(), 1); QVERIFY(mouseArea1->pressed()); QVERIFY(mouseArea1->hovered()); QVERIFY(!mouseArea2->hovered()); QTest::touchEvent(&window, device).release(0, p1, &window); + deliveryAgent->flushFrameSynchronousEvents(&window); QCOMPARE(clickSpy1.size(), 2); QVERIFY(mouseArea1->hovered()); QVERIFY(!mouseArea1->pressed());