diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/quick/handlers/qquickdraghandler.cpp | 10 | ||||
-rw-r--r-- | src/quick/handlers/qquickdraghandler_p.h | 6 |
2 files changed, 16 insertions, 0 deletions
diff --git a/src/quick/handlers/qquickdraghandler.cpp b/src/quick/handlers/qquickdraghandler.cpp index dc3116e300..945d60119d 100644 --- a/src/quick/handlers/qquickdraghandler.cpp +++ b/src/quick/handlers/qquickdraghandler.cpp @@ -88,6 +88,7 @@ void QQuickDragHandler::handleEventPoint(QQuickEventPoint *point) if (!m_yAxis.enabled()) delta.setY(0); if (active()) { + setTranslation(delta); if (target() && target()->parentItem()) { QPointF pos = target()->parentItem()->mapFromScene(m_startPos + delta); enforceAxisConstraints(&pos); @@ -122,6 +123,15 @@ void QQuickDragHandler::enforceAxisConstraints(QPointF *localPos) localPos->setY(qBound(m_yAxis.minimum(), localPos->y(), m_yAxis.maximum())); } +void QQuickDragHandler::setTranslation(const QPointF &trans) +{ + if (trans == m_translation) // fuzzy compare? + return; + m_translation = trans; + emit translationChanged(); +} + + QQuickDragAxis::QQuickDragAxis() : m_minimum(-DBL_MAX) , m_maximum(DBL_MAX) diff --git a/src/quick/handlers/qquickdraghandler_p.h b/src/quick/handlers/qquickdraghandler_p.h index 8f27d51b4f..69fa297b3c 100644 --- a/src/quick/handlers/qquickdraghandler_p.h +++ b/src/quick/handlers/qquickdraghandler_p.h @@ -90,6 +90,7 @@ class Q_AUTOTEST_EXPORT QQuickDragHandler : public QQuickPointerSingleHandler Q_OBJECT Q_PROPERTY(QQuickDragAxis * xAxis READ xAxis CONSTANT) Q_PROPERTY(QQuickDragAxis * yAxis READ yAxis CONSTANT) + Q_PROPERTY(QPointF translation READ translation NOTIFY translationChanged) public: QQuickDragHandler(QObject *parent = 0); @@ -100,10 +101,14 @@ public: QQuickDragAxis *xAxis() { return &m_xAxis; } QQuickDragAxis *yAxis() { return &m_yAxis; } + QPointF translation() const { return m_translation; } + void setTranslation(const QPointF &trans); + Q_INVOKABLE void enforceConstraints(); Q_SIGNALS: // void gestureStarted(QQuickGestureEvent *gesture); + void translationChanged(); protected: bool wantsEventPoint(QQuickEventPoint *point) override; @@ -114,6 +119,7 @@ private: private: QPointF m_startPos; + QPointF m_translation; QQuickDragAxis m_xAxis; QQuickDragAxis m_yAxis; |