diff options
-rw-r--r-- | src/quick/handlers/qquickpointerhandler.cpp | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/src/quick/handlers/qquickpointerhandler.cpp b/src/quick/handlers/qquickpointerhandler.cpp index 88c6800dcc..f625b50f10 100644 --- a/src/quick/handlers/qquickpointerhandler.cpp +++ b/src/quick/handlers/qquickpointerhandler.cpp @@ -198,10 +198,17 @@ QQuickItem *QQuickPointerHandler::target() const void QQuickPointerHandler::handlePointerEvent(QQuickPointerEvent *event) { - if (wantsPointerEvent(event)) + if (wantsPointerEvent(event)) { handlePointerEventImpl(event); - else + } else { setActive(false); + int pCount = event->pointCount(); + for (int i = 0; i < pCount; ++i) { + QQuickEventPoint *pt = event->point(i); + if (pt->grabberPointerHandler() == this) + pt->cancelExclusiveGrab(); + } + } } bool QQuickPointerHandler::wantsPointerEvent(QQuickPointerEvent *event) |