aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/quick/handlers/qquickpointerhandler.cpp8
1 files changed, 4 insertions, 4 deletions
diff --git a/src/quick/handlers/qquickpointerhandler.cpp b/src/quick/handlers/qquickpointerhandler.cpp
index ed08eed93e..0398863ba3 100644
--- a/src/quick/handlers/qquickpointerhandler.cpp
+++ b/src/quick/handlers/qquickpointerhandler.cpp
@@ -75,14 +75,14 @@ QQuickPointerHandler::~QQuickPointerHandler()
void QQuickPointerHandler::setGrab(QQuickEventPoint *point, bool grab)
{
- if (grab) {
- QQuickPointerHandler *oldGrabber = point->grabberPointerHandler();
- if (oldGrabber && oldGrabber != this)
+ QQuickPointerHandler *oldGrabber = point->grabberPointerHandler();
+ if (grab && oldGrabber != this) {
+ if (oldGrabber)
oldGrabber->handleGrabCancel(point);
point->setGrabberPointerHandler(this);
onGrabChanged(point);
emit grabChanged(point);
- } else if (point->grabberPointerHandler() == this) {
+ } else if (!grab && oldGrabber == this) {
point->setGrabberPointerHandler(nullptr);
onGrabChanged(point);
emit grabChanged(point);