diff options
author | Shawn Rutledge <shawn.rutledge@qt.io> | 2021-07-02 21:27:54 +0200 |
---|---|---|
committer | Qt Cherry-pick Bot <cherrypick_bot@qt-project.org> | 2021-07-05 15:02:36 +0000 |
commit | 81afda3d2c42f0397b59c19f12c41b30dddd74db (patch) | |
tree | 89674a956f42da490c9f062a877d8e67e7b4207c /tests | |
parent | a7da4e1af4e6d00a51bf0cdcaacccc694db080fd (diff) |
Send hover events with correct scene and global positions
Task-number: QTBUG-94971
Change-Id: I047223dfdb76a6f1237b9d15b54381cd085aa1ac
Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
(cherry picked from commit 0a271b5cd4da9e13accbf63a576413c45f367adc)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
Diffstat (limited to 'tests')
-rw-r--r-- | tests/auto/quick/qquickitem/tst_qquickitem.cpp | 36 | ||||
-rw-r--r-- | tests/manual/pointer/sidebar.qml | 12 |
2 files changed, 46 insertions, 2 deletions
diff --git a/tests/auto/quick/qquickitem/tst_qquickitem.cpp b/tests/auto/quick/qquickitem/tst_qquickitem.cpp index 79e2925f91..5e3a5e1d14 100644 --- a/tests/auto/quick/qquickitem/tst_qquickitem.cpp +++ b/tests/auto/quick/qquickitem/tst_qquickitem.cpp @@ -1561,18 +1561,37 @@ public: int hoverEnterCount; int hoverMoveCount; int hoverLeaveCount; + QPoint hoverPosition; + QPoint hoverScenePosition; + QPoint hoverGlobalPosition; + QPoint hoverLastGlobalPosition; protected: void hoverEnterEvent(QHoverEvent *event) override { + qCDebug(lcTests) << static_cast<QSinglePointEvent *>(event) << event->position() << event->scenePosition() << event->globalPosition(); event->accept(); ++hoverEnterCount; + hoverPosition = event->position().toPoint(); + hoverScenePosition = event->scenePosition().toPoint(); + hoverGlobalPosition = event->globalPosition().toPoint(); + hoverLastGlobalPosition = event->points().first().globalLastPosition().toPoint(); } void hoverMoveEvent(QHoverEvent *event) override { + qCDebug(lcTests) << static_cast<QSinglePointEvent *>(event) << event->position() << event->scenePosition() << event->globalPosition(); event->accept(); ++hoverMoveCount; + hoverPosition = event->position().toPoint(); + hoverScenePosition = event->scenePosition().toPoint(); + hoverGlobalPosition = event->globalPosition().toPoint(); + hoverLastGlobalPosition = event->points().first().globalLastPosition().toPoint(); } void hoverLeaveEvent(QHoverEvent *event) override { + qCDebug(lcTests) << static_cast<QSinglePointEvent *>(event) << event->position() << event->scenePosition() << event->globalPosition(); event->accept(); ++hoverLeaveCount; + hoverPosition = event->position().toPoint(); + hoverScenePosition = event->scenePosition().toPoint(); + hoverGlobalPosition = event->globalPosition().toPoint(); + hoverLastGlobalPosition = event->points().first().globalLastPosition().toPoint(); } }; @@ -1629,13 +1648,28 @@ void tst_qquickitem::hoverEvent() QTest::mouseMove(window, outside); item->resetCounters(); + auto checkPositions = [=](QPoint pt) { + QCOMPARE(item->hoverPosition, pt); + QCOMPARE(item->hoverScenePosition, item->mapToScene(pt).toPoint()); + QCOMPARE(item->hoverGlobalPosition, item->mapToGlobal(pt).toPoint()); + QVERIFY(!item->hoverLastGlobalPosition.isNull()); + }; + // Enter, then move twice inside, then leave. + const bool shouldReceiveHoverEvents = visible && acceptHoverEvents; QTest::mouseMove(window, inside); + if (shouldReceiveHoverEvents) + checkPositions(inside); QTest::mouseMove(window, anotherInside); + if (shouldReceiveHoverEvents) + checkPositions(anotherInside); QTest::mouseMove(window, inside); + if (shouldReceiveHoverEvents) + checkPositions(inside); QTest::mouseMove(window, outside); + if (shouldReceiveHoverEvents) + checkPositions(outside); - const bool shouldReceiveHoverEvents = visible && acceptHoverEvents; if (shouldReceiveHoverEvents) { QCOMPARE(item->hoverEnterCount, 1); QVERIFY(item->hoverMoveCount >= 2); diff --git a/tests/manual/pointer/sidebar.qml b/tests/manual/pointer/sidebar.qml index b7370a4fb7..cd59f1d5cf 100644 --- a/tests/manual/pointer/sidebar.qml +++ b/tests/manual/pointer/sidebar.qml @@ -1,6 +1,6 @@ /**************************************************************************** ** -** Copyright (C) 2018 The Qt Company Ltd. +** Copyright (C) 2021 The Qt Company Ltd. ** Contact: https://www.qt.io/licensing/ ** ** This file is part of the manual tests of the Qt Toolkit. @@ -187,4 +187,14 @@ Rectangle { anchors.fill: parent } } + + HoverHandler { + id: rootHover + } + + Text { + anchors.right: parent.right + color: "cyan" + text: "scene " + rootHover.point.scenePosition.x.toFixed(1) + ", " + rootHover.point.scenePosition.y.toFixed(1) + } } |