From d728ad7ace09c2b35d6753fc08c4092ea8813193 Mon Sep 17 00:00:00 2001 From: Shawn Rutledge Date: Sat, 15 Apr 2017 10:12:10 +0200 Subject: DragHandler: onGrabChanged, enforceConstraints MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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 --- src/quick/handlers/qquickdraghandler.cpp | 6 ++++++ src/quick/handlers/qquickdraghandler_p.h | 1 + 2 files changed, 7 insertions(+) (limited to 'src') 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(); -- cgit v1.2.3