diff options
author | Jan Arve Sæther <jan-arve.saether@qt.io> | 2018-05-11 13:36:52 +0200 |
---|---|---|
committer | Jan Arve Sæther <jan-arve.saether@qt.io> | 2018-05-11 21:42:56 +0000 |
commit | 1f3713a2b40a467e8a8c552d0980dbdd9f7a1ab4 (patch) | |
tree | 5e3b1cbfcf5ebe15feea07911066dfb66e6f37d5 /src | |
parent | 0a2aaee61cfc2888bc71f54ac5b165d248cbf5e8 (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.cpp | 3 |
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()); |