aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorJan Arve Sæther <jan-arve.saether@qt.io>2018-05-11 13:36:52 +0200
committerJan Arve Sæther <jan-arve.saether@qt.io>2018-05-11 21:42:56 +0000
commit1f3713a2b40a467e8a8c552d0980dbdd9f7a1ab4 (patch)
tree5e3b1cbfcf5ebe15feea07911066dfb66e6f37d5 /src
parent0a2aaee61cfc2888bc71f54ac5b165d248cbf5e8 (diff)
Fix bug where Ungrab event was not sent
clearGrabbers() will also clear QQuickWindow::mouseGrabberItem(), so we have to retrieve a copy of the mouse grabber item in advance of calling clearGrabbers(). This could happen when a filtering parent actually called grabMouse() on mouse release(!) event. Change-Id: I287214dbdff802707be625d73c38dd9c5d723aef Task-number: QTBUG-68030 Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
Diffstat (limited to 'src')
-rw-r--r--src/quick/items/qquickwindow.cpp3
1 files changed, 2 insertions, 1 deletions
diff --git a/src/quick/items/qquickwindow.cpp b/src/quick/items/qquickwindow.cpp
index 48eba6a7a0..0f617733c4 100644
--- a/src/quick/items/qquickwindow.cpp
+++ b/src/quick/items/qquickwindow.cpp
@@ -2311,8 +2311,9 @@ void QQuickWindowPrivate::deliverPointerEvent(QQuickPointerEvent *event)
deliverMouseEvent(event->asPointerMouseEvent());
// failsafe: never allow any kind of grab to persist after release
if (event->isReleaseEvent() && event->buttons() == Qt::NoButton) {
+ QQuickItem *oldGrabber = q->mouseGrabberItem();
event->clearGrabbers();
- sendUngrabEvent(q->mouseGrabberItem(), false);
+ sendUngrabEvent(oldGrabber, false);
}
} else if (event->asPointerTouchEvent()) {
deliverTouchEvent(event->asPointerTouchEvent());