diff options
3 files changed, 14 insertions, 33 deletions
diff --git a/src/quick/items/qquickmousearea.cpp b/src/quick/items/qquickmousearea.cpp index d9d9f32c11..303ccb1ce2 100644 --- a/src/quick/items/qquickmousearea.cpp +++ b/src/quick/items/qquickmousearea.cpp @@ -849,14 +849,8 @@ void QQuickMouseArea::hoverEnterEvent(QHoverEvent *event) me.setPosition(d->lastPos); } - if (auto parentMouseArea = qobject_cast<QQuickMouseArea *>(parentItem())) { - if (parentMouseArea->acceptHoverEvents()) { - // Special legacy case: if our parent is another MouseArea, and we're - // hovered, the parent MouseArea should be hovered too. We achieve this - // by simply ignoring the event to not block propagation. - event->ignore(); - } - } + // A MouseArea should not block hover events + event->ignore(); } void QQuickMouseArea::hoverMoveEvent(QHoverEvent *event) @@ -876,14 +870,8 @@ void QQuickMouseArea::hoverMoveEvent(QHoverEvent *event) emit positionChanged(&me); } - if (auto parentMouseArea = qobject_cast<QQuickMouseArea *>(parentItem())) { - if (parentMouseArea->acceptHoverEvents()) { - // Special legacy case: if our parent is another MouseArea, and we're - // hovered, the parent MouseArea should be hovered too. We achieve this - // by simply ignoring the event to not block propagation. - event->ignore(); - } - } + // A MouseArea should not block hover events + event->ignore(); } void QQuickMouseArea::hoverLeaveEvent(QHoverEvent *event) @@ -894,14 +882,8 @@ void QQuickMouseArea::hoverLeaveEvent(QHoverEvent *event) else setHovered(false); - if (auto parentMouseArea = qobject_cast<QQuickMouseArea *>(parentItem())) { - if (parentMouseArea->acceptHoverEvents()) { - // Special legacy case: if our parent is another MouseArea, and we're - // hovered, the parent MouseArea should be hovered too. We achieve this - // by simply ignoring the event to not block propagation. - event->ignore(); - } - } + // A MouseArea should not block hover events + event->ignore(); } #if QT_CONFIG(wheelevent) diff --git a/tests/auto/quick/pointerhandlers/mousearea_interop/tst_mousearea_interop.cpp b/tests/auto/quick/pointerhandlers/mousearea_interop/tst_mousearea_interop.cpp index fff1558bde..ffc0cc333d 100644 --- a/tests/auto/quick/pointerhandlers/mousearea_interop/tst_mousearea_interop.cpp +++ b/tests/auto/quick/pointerhandlers/mousearea_interop/tst_mousearea_interop.cpp @@ -194,19 +194,18 @@ void tst_MouseAreaInterop::hoverHandlerDoesntHoverOnPress() // QTBUG-72843 QTRY_COMPARE(handler->isHovered(), true); // move the mouse into the "button" QTest::mouseMove(&window, p); - // current behavior: the mouse is still within the HoverHandler's region of interest, but MouseArea is obstructing. - QTRY_COMPARE(handler->isHovered(), false); + // both the hoverhandler and the mouse area should now be hovered! + QTRY_COMPARE(handler->isHovered(), true); QCOMPARE(ma->hovered(), true); - // So HoverHandler is no longer hovered (unfortunately). Clicking should not change it. QSignalSpy hoveredChangedSpy(handler, SIGNAL(hoveredChanged())); QTest::mousePress(&window, Qt::LeftButton, Qt::NoModifier, p); QTRY_COMPARE(ma->pressed(), true); - QCOMPARE(handler->isHovered(), false); + QCOMPARE(handler->isHovered(), true); QCOMPARE(hoveredChangedSpy.count(), 0); QTest::mouseRelease(&window, Qt::LeftButton, Qt::NoModifier, p); QTRY_COMPARE(ma->pressed(), false); - QCOMPARE(handler->isHovered(), false); + QCOMPARE(handler->isHovered(), true); QCOMPARE(hoveredChangedSpy.count(), 0); } diff --git a/tests/auto/quick/pointerhandlers/qquickhoverhandler/tst_qquickhoverhandler.cpp b/tests/auto/quick/pointerhandlers/qquickhoverhandler/tst_qquickhoverhandler.cpp index d4ce666c4d..9b11f8170b 100644 --- a/tests/auto/quick/pointerhandlers/qquickhoverhandler/tst_qquickhoverhandler.cpp +++ b/tests/auto/quick/pointerhandlers/qquickhoverhandler/tst_qquickhoverhandler.cpp @@ -206,8 +206,8 @@ void tst_HoverHandler::mouseAreaAndUnderlyingHoverHandler() #endif QTest::mouseMove(window, buttonCenter); - QCOMPARE(topSidebarHH->isHovered(), false); - QCOMPARE(sidebarHoveredSpy.count(), 2); + QCOMPARE(topSidebarHH->isHovered(), true); + QCOMPARE(sidebarHoveredSpy.count(), 1); QCOMPARE(buttonMA->hovered(), true); QCOMPARE(buttonHoveredSpy.count(), 1); #if QT_CONFIG(cursor) @@ -216,7 +216,7 @@ void tst_HoverHandler::mouseAreaAndUnderlyingHoverHandler() QTest::mouseMove(window, rightOfButton); QCOMPARE(topSidebarHH->isHovered(), true); - QCOMPARE(sidebarHoveredSpy.count(), 3); + QCOMPARE(sidebarHoveredSpy.count(), 1); QCOMPARE(buttonMA->hovered(), false); QCOMPARE(buttonHoveredSpy.count(), 2); #if QT_CONFIG(cursor) @@ -225,7 +225,7 @@ void tst_HoverHandler::mouseAreaAndUnderlyingHoverHandler() QTest::mouseMove(window, outOfSidebar); QCOMPARE(topSidebarHH->isHovered(), false); - QCOMPARE(sidebarHoveredSpy.count(), 4); + QCOMPARE(sidebarHoveredSpy.count(), 2); QCOMPARE(buttonMA->hovered(), false); QCOMPARE(buttonHoveredSpy.count(), 2); #if QT_CONFIG(cursor) |