aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/quick/handlers/qquickpointerhandler.cpp11
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)