aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJan Arve Sæther <jan-arve.saether@qt.io>2017-10-11 17:11:06 +0200
committerLiang Qi <liang.qi@qt.io>2017-10-13 12:17:15 +0000
commit6577609b5fb697e0e779f325772087e431877f7c (patch)
treea68d3490693d951937bb5829979400e27c4ae364
parent26c6a4d48b1510f9d911e398c525613b6edebedd (diff)
Undo pre-accept state if the event was not filtered
Since the accepted state should only be considered if an event got filtered, we should make sure that the accepted state gets restored back to what it was before it was pre-accepted if the event was not filtered. This fixes a regression introduced in Qt Location Change-Id: I9cf344c43184d3890ea2d4eff4144a0469b33e7d Task-number: QTBUG-63636 Reviewed-by: Frederik Gladhorn <frederik.gladhorn@qt.io>
-rw-r--r--src/quick/items/qquickwindow.cpp4
1 files changed, 4 insertions, 0 deletions
diff --git a/src/quick/items/qquickwindow.cpp b/src/quick/items/qquickwindow.cpp
index 4c79c40164..caa128d6e4 100644
--- a/src/quick/items/qquickwindow.cpp
+++ b/src/quick/items/qquickwindow.cpp
@@ -2768,6 +2768,7 @@ bool QQuickWindowPrivate::sendFilteredPointerEventImpl(QQuickPointerEvent *event
if (receiver->acceptedMouseButtons()) {
QPointF localPos = receiver->mapFromScene(pme->point(0)->scenePosition());
QMouseEvent *me = pme->asMouseEvent(localPos);
+ const bool wasAccepted = me->isAccepted();
me->setAccepted(true);
auto oldMouseGrabber = pme->point(0)->grabberItem();
if (filteringParent->childMouseEventFilter(receiver, me)) {
@@ -2782,6 +2783,9 @@ bool QQuickWindowPrivate::sendFilteredPointerEventImpl(QQuickPointerEvent *event
pme->point(0)->setGrabberItem(receiver);
}
}
+ } else {
+ // Restore accepted state if the event was not filtered.
+ me->setAccepted(wasAccepted);
}
}
} else if (QQuickPointerTouchEvent *pte = event->asPointerTouchEvent()) {