aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/quick/items/qquickmousearea.cpp10
-rw-r--r--tests/auto/quick/qquickmousearea/tst_qquickmousearea.cpp1
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;