diff options
Diffstat (limited to 'src/quick/handlers/qquickpointerhandler.cpp')
| -rw-r--r-- | src/quick/handlers/qquickpointerhandler.cpp | 8 |
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); |
