diff options
Diffstat (limited to 'src/quick/handlers/qquickmultipointerhandler.cpp')
-rw-r--r-- | src/quick/handlers/qquickmultipointerhandler.cpp | 15 |
1 files changed, 12 insertions, 3 deletions
diff --git a/src/quick/handlers/qquickmultipointerhandler.cpp b/src/quick/handlers/qquickmultipointerhandler.cpp index 1a5684d80e..016210beff 100644 --- a/src/quick/handlers/qquickmultipointerhandler.cpp +++ b/src/quick/handlers/qquickmultipointerhandler.cpp @@ -238,10 +238,19 @@ void QQuickMultiPointerHandler::acceptPoints(const QVector<QQuickEventPoint *> & point->setAccepted(); } -void QQuickMultiPointerHandler::grabPoints(QVector<QQuickEventPoint *> points) +bool QQuickMultiPointerHandler::grabPoints(QVector<QQuickEventPoint *> points) { - for (QQuickEventPoint* point : points) - setExclusiveGrab(point); + bool canGrab = true; + for (QQuickEventPoint* point : points) { + auto grabber = point->grabberItem(); + if (grabber && (grabber->keepMouseGrab() || grabber->keepTouchGrab())) + canGrab = false; + } + if (canGrab) { + for (QQuickEventPoint* point : points) + setExclusiveGrab(point); + } + return canGrab; } QT_END_NAMESPACE |