diff options
-rw-r--r-- | src/quick/items/qquickmousearea.cpp | 10 | ||||
-rw-r--r-- | tests/auto/quick/qquickmousearea/tst_qquickmousearea.cpp | 1 |
2 files changed, 9 insertions, 2 deletions
diff --git a/src/quick/items/qquickmousearea.cpp b/src/quick/items/qquickmousearea.cpp index 6897e3d904..a2522a4f47 100644 --- a/src/quick/items/qquickmousearea.cpp +++ b/src/quick/items/qquickmousearea.cpp @@ -47,6 +47,8 @@ #include <private/qqmldata_p.h> +#include <QtGui/private/qguiapplication_p.h> + #include <QtGui/qevent.h> #include <QtGui/qguiapplication.h> #include <QtGui/qstylehints.h> @@ -1057,8 +1059,14 @@ void QQuickMouseArea::itemChange(ItemChange change, const ItemChangeData &value) Q_D(QQuickMouseArea); switch (change) { case ItemVisibleHasChanged: - if (acceptHoverEvents() && d->hovered != (isVisible() && isUnderMouse())) + if (acceptHoverEvents() && d->hovered != (isVisible() && isUnderMouse())) { + if (!d->hovered) { + QPointF cursorPos = QGuiApplicationPrivate::lastCursorPosition; + d->lastScenePos = d->canvas->mapFromGlobal(cursorPos.toPoint()); + d->lastPos = mapFromScene(d->lastScenePos); + } setHovered(!d->hovered); + } break; default: break; diff --git a/tests/auto/quick/qquickmousearea/tst_qquickmousearea.cpp b/tests/auto/quick/qquickmousearea/tst_qquickmousearea.cpp index 8bc9b06a02..686c05719d 100644 --- a/tests/auto/quick/qquickmousearea/tst_qquickmousearea.cpp +++ b/tests/auto/quick/qquickmousearea/tst_qquickmousearea.cpp @@ -989,7 +989,6 @@ void tst_QQuickMouseArea::hoverVisible() QCOMPARE(mouseTracker->hovered(), true); QCOMPARE(enteredSpy.count(), 1); - QEXPECT_FAIL("", "QTBUG-24282", Continue); QCOMPARE(QPointF(mouseTracker->mouseX(), mouseTracker->mouseY()), QPointF(11,33)); delete canvas; |