diff options
author | Jan Arve Sæther <jan-arve.saether@qt.io> | 2017-10-11 17:11:06 +0200 |
---|---|---|
committer | Liang Qi <liang.qi@qt.io> | 2017-10-13 12:17:15 +0000 |
commit | 6577609b5fb697e0e779f325772087e431877f7c (patch) | |
tree | a68d3490693d951937bb5829979400e27c4ae364 | |
parent | 26c6a4d48b1510f9d911e398c525613b6edebedd (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.cpp | 4 |
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()) { |