From 6577609b5fb697e0e779f325772087e431877f7c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20Arve=20S=C3=A6ther?= Date: Wed, 11 Oct 2017 17:11:06 +0200 Subject: 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 --- src/quick/items/qquickwindow.cpp | 4 ++++ 1 file changed, 4 insertions(+) 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()) { -- cgit v1.2.3