aboutsummaryrefslogtreecommitdiffstats
path: root/tests/auto/quick/qquickitem/tst_qquickitem.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'tests/auto/quick/qquickitem/tst_qquickitem.cpp')
-rw-r--r--tests/auto/quick/qquickitem/tst_qquickitem.cpp42
1 files changed, 38 insertions, 4 deletions
diff --git a/tests/auto/quick/qquickitem/tst_qquickitem.cpp b/tests/auto/quick/qquickitem/tst_qquickitem.cpp
index 8f8ae396e3..5c2feb1c2a 100644
--- a/tests/auto/quick/qquickitem/tst_qquickitem.cpp
+++ b/tests/auto/quick/qquickitem/tst_qquickitem.cpp
@@ -1559,18 +1559,37 @@ public:
int hoverEnterCount;
int hoverMoveCount;
int hoverLeaveCount;
+ QPoint hoverPosition;
+ QPoint hoverScenePosition;
+ QPoint hoverGlobalPosition;
+ QPoint hoverLastGlobalPosition;
protected:
- virtual void hoverEnterEvent(QHoverEvent *event) {
+ 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();
}
- virtual void hoverMoveEvent(QHoverEvent *event) {
+ 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();
}
- virtual void hoverLeaveEvent(QHoverEvent *event) {
+ 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();
}
};
@@ -1620,13 +1639,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);
QCOMPARE(item->hoverMoveCount, 2);