aboutsummaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
authorShawn Rutledge <shawn.rutledge@qt.io>2021-07-02 21:27:54 +0200
committerQt Cherry-pick Bot <cherrypick_bot@qt-project.org>2021-07-05 15:02:36 +0000
commit81afda3d2c42f0397b59c19f12c41b30dddd74db (patch)
tree89674a956f42da490c9f062a877d8e67e7b4207c /tests
parenta7da4e1af4e6d00a51bf0cdcaacccc694db080fd (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.cpp36
-rw-r--r--tests/manual/pointer/sidebar.qml12
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)
+ }
}