diff options
author | Shawn Rutledge <shawn.rutledge@qt.io> | 2017-04-15 10:12:10 +0200 |
---|---|---|
committer | Shawn Rutledge <shawn.rutledge@qt.io> | 2017-04-24 17:16:24 +0000 |
commit | d728ad7ace09c2b35d6753fc08c4092ea8813193 (patch) | |
tree | d00b01beb41d09c6c9266bf958e3178e64ae6195 | |
parent | 8576777f1c5e743ef9104ce939f1b5da6ede89d3 (diff) |
DragHandler: onGrabChanged, enforceConstraints
If the grab is stolen by a parent such as a Flickable, ensure that
the DragHandler doesn't keep dragging. This helps to prevent dragging
sliders out of their "groove" constraints.
Change-Id: Id24f53e137ed186b1c02ab9c73a69a59022e80b0
Reviewed-by: Jan Arve Sæther <jan-arve.saether@qt.io>
-rw-r--r-- | src/quick/handlers/qquickdraghandler.cpp | 6 | ||||
-rw-r--r-- | src/quick/handlers/qquickdraghandler_p.h | 1 |
2 files changed, 7 insertions, 0 deletions
diff --git a/src/quick/handlers/qquickdraghandler.cpp b/src/quick/handlers/qquickdraghandler.cpp index 3b1ec1c344..73ad97712e 100644 --- a/src/quick/handlers/qquickdraghandler.cpp +++ b/src/quick/handlers/qquickdraghandler.cpp @@ -73,6 +73,12 @@ bool QQuickDragHandler::wantsEventPoint(QQuickEventPoint *point) || QQuickPointerSingleHandler::wantsEventPoint(point)); } +void QQuickDragHandler::onGrabChanged(QQuickPointerHandler *grabber, QQuickEventPoint::GrabState stateChange, QQuickEventPoint *point) +{ + enforceConstraints(); + QQuickPointerSingleHandler::onGrabChanged(grabber, stateChange, point); +} + void QQuickDragHandler::handleEventPoint(QQuickEventPoint *point) { point->setAccepted(); diff --git a/src/quick/handlers/qquickdraghandler_p.h b/src/quick/handlers/qquickdraghandler_p.h index cfccc19115..a75ea6f2c7 100644 --- a/src/quick/handlers/qquickdraghandler_p.h +++ b/src/quick/handlers/qquickdraghandler_p.h @@ -112,6 +112,7 @@ Q_SIGNALS: protected: bool wantsEventPoint(QQuickEventPoint *point) override; + void onGrabChanged(QQuickPointerHandler *grabber, QQuickEventPoint::GrabState stateChange, QQuickEventPoint *point) override; private: void ungrab(); |