aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorShawn Rutledge <shawn.rutledge@qt.io>2022-01-31 16:18:07 +0100
committerQt Cherry-pick Bot <cherrypick_bot@qt-project.org>2022-02-09 03:22:02 +0000
commitcabd9e6292d316f111788d2f6d85589e30763d2d (patch)
treeeb6e9690bd373414aa7284331f7d257b8798dfff
parent548d50b172828610dc48096175de2c9f04e9848c (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.cpp10
-rw-r--r--tests/auto/quick/qquicktext/tst_qquicktext.cpp14
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);
}