diff options
author | Shawn Rutledge <shawn.rutledge@qt.io> | 2022-01-31 16:18:07 +0100 |
---|---|---|
committer | Qt Cherry-pick Bot <cherrypick_bot@qt-project.org> | 2022-02-09 03:22:02 +0000 |
commit | cabd9e6292d316f111788d2f6d85589e30763d2d (patch) | |
tree | eb6e9690bd373414aa7284331f7d257b8798dfff | |
parent | 548d50b172828610dc48096175de2c9f04e9848c (diff) |
Use the new QHoverEvent ctor taking globalPos
We want to give globalPos to every pointer event ctor in general, to
avoid bad assumptions.
Task-number: QTBUG-100324
Change-Id: I8f744d4f01aec9e860b625a77b258237539deab6
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
(cherry picked from commit 334aea0aa14eac90a6ff77aad120d76ed0fad372)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
-rw-r--r-- | src/quick/util/qquickdeliveryagent.cpp | 10 | ||||
-rw-r--r-- | tests/auto/quick/qquicktext/tst_qquicktext.cpp | 14 |
2 files changed, 13 insertions, 11 deletions
diff --git a/src/quick/util/qquickdeliveryagent.cpp b/src/quick/util/qquickdeliveryagent.cpp index 0e9bf42905..36f1128a39 100644 --- a/src/quick/util/qquickdeliveryagent.cpp +++ b/src/quick/util/qquickdeliveryagent.cpp @@ -942,14 +942,14 @@ bool QQuickDeliveryAgentPrivate::sendHoverEvent(QEvent::Type type, QQuickItem *i Qt::KeyboardModifiers modifiers, ulong timestamp) { auto itemPrivate = QQuickItemPrivate::get(item); - const QTransform transform = itemPrivate->windowToItemTransform(); - QHoverEvent hoverEvent(type, transform.map(scenePos), transform.map(lastScenePos), modifiers); + const auto transform = itemPrivate->windowToItemTransform(); + const auto transformToGlobal = itemPrivate->windowToGlobalTransform(); + auto globalPos = transformToGlobal.map(scenePos); + QHoverEvent hoverEvent(type, transform.map(scenePos), globalPos, transform.map(lastScenePos), modifiers); hoverEvent.setTimestamp(timestamp); hoverEvent.setAccepted(true); - const QTransform transformToGlobal = itemPrivate->windowToGlobalTransform(); QEventPoint &point = hoverEvent.point(0); QMutableEventPoint::setScenePosition(point, scenePos); - QMutableEventPoint::setGlobalPosition(point, transformToGlobal.map(scenePos)); QMutableEventPoint::setGlobalLastPosition(point, transformToGlobal.map(lastScenePos)); hasFiltered.clear(); @@ -1125,7 +1125,7 @@ bool QQuickDeliveryAgentPrivate::deliverHoverEventToItem( if (clearHover) { // Note: a leave should never stop propagation - QHoverEvent hoverEvent(QEvent::HoverLeave, scenePos, lastScenePos, modifiers); + QHoverEvent hoverEvent(QEvent::HoverLeave, scenePos, globalPos, lastScenePos, modifiers); hoverEvent.setTimestamp(timestamp); for (QQuickPointerHandler *h : itemPrivate->extra->pointerHandlers) { diff --git a/tests/auto/quick/qquicktext/tst_qquicktext.cpp b/tests/auto/quick/qquicktext/tst_qquicktext.cpp index a1b627b9a9..bf90a8efd4 100644 --- a/tests/auto/quick/qquicktext/tst_qquicktext.cpp +++ b/tests/auto/quick/qquicktext/tst_qquicktext.cpp @@ -2106,11 +2106,12 @@ void tst_qquicktext::linkInteraction() QVERIFY(mousePositions.count() > 0); QPointF mousePosition = mousePositions.first(); + auto globalPos = textObject->mapToGlobal(mousePosition); { - QHoverEvent he(QEvent::HoverEnter, mousePosition, QPointF()); + QHoverEvent he(QEvent::HoverEnter, mousePosition, globalPos, QPointF()); static_cast<EventSender*>(static_cast<QQuickItem*>(textObject))->sendEvent(&he); - QMouseEvent me(QEvent::MouseButtonPress, mousePosition, Qt::LeftButton, Qt::NoButton, Qt::NoModifier); + QMouseEvent me(QEvent::MouseButtonPress, mousePosition, globalPos, Qt::LeftButton, Qt::NoButton, Qt::NoModifier); static_cast<EventSender*>(static_cast<QQuickItem*>(textObject))->sendEvent(&me); } @@ -2120,11 +2121,12 @@ void tst_qquicktext::linkInteraction() for (int i = 1; i < mousePositions.count(); ++i) { mousePosition = mousePositions.at(i); + auto globalPos = textObject->mapToGlobal(mousePosition); - QHoverEvent he(QEvent::HoverMove, mousePosition, QPointF()); + QHoverEvent he(QEvent::HoverMove, mousePosition, globalPos, QPointF()); static_cast<EventSender*>(static_cast<QQuickItem*>(textObject))->sendEvent(&he); - QMouseEvent me(QEvent::MouseMove, mousePosition, Qt::LeftButton, Qt::NoButton, Qt::NoModifier); + QMouseEvent me(QEvent::MouseMove, mousePosition, globalPos, Qt::LeftButton, Qt::NoButton, Qt::NoModifier); static_cast<EventSender*>(static_cast<QQuickItem*>(textObject))->sendEvent(&me); } @@ -2133,10 +2135,10 @@ void tst_qquicktext::linkInteraction() QCOMPARE(textObject->linkAt(mousePosition.x(), mousePosition.y()), hoverMoveLink); { - QHoverEvent he(QEvent::HoverLeave, mousePosition, QPointF()); + QHoverEvent he(QEvent::HoverLeave, mousePosition, globalPos, QPointF()); static_cast<EventSender*>(static_cast<QQuickItem*>(textObject))->sendEvent(&he); - QMouseEvent me(QEvent::MouseButtonRelease, mousePosition, Qt::LeftButton, Qt::NoButton, Qt::NoModifier); + QMouseEvent me(QEvent::MouseButtonRelease, mousePosition, globalPos, Qt::LeftButton, Qt::NoButton, Qt::NoModifier); static_cast<EventSender*>(static_cast<QQuickItem*>(textObject))->sendEvent(&me); } |