diff options
-rw-r--r-- | src/quick/items/qquickevents.cpp | 9 | ||||
-rw-r--r-- | src/quick/items/qquickevents_p_p.h | 3 |
2 files changed, 9 insertions, 3 deletions
diff --git a/src/quick/items/qquickevents.cpp b/src/quick/items/qquickevents.cpp index 619ec455ff..d0a32929f1 100644 --- a/src/quick/items/qquickevents.cpp +++ b/src/quick/items/qquickevents.cpp @@ -536,9 +536,10 @@ QObject *QQuickEventPoint::grabber() const void QQuickEventPoint::setGrabber(QObject *grabber) { - qCDebug(lcPointerHandlerDispatch) << this << grabber; - m_grabber = QPointer<QObject>(grabber); - m_grabberIsHandler = (qmlobject_cast<QQuickPointerHandler *>(grabber) != nullptr); + if (QQuickPointerHandler *phGrabber = qmlobject_cast<QQuickPointerHandler *>(grabber)) + setPointerHandlerGrabber(phGrabber); + else + setItemGrabber(static_cast<QQuickItem *>(grabber)); } QQuickItem *QQuickEventPoint::itemGrabber() const @@ -551,6 +552,7 @@ void QQuickEventPoint::setItemGrabber(QQuickItem *grabber) qCDebug(lcPointerHandlerDispatch) << this << grabber; m_grabber = QPointer<QObject>(grabber); m_grabberIsHandler = false; + m_sceneGrabPos = m_scenePos; } QQuickPointerHandler *QQuickEventPoint::pointerHandlerGrabber() const @@ -563,6 +565,7 @@ void QQuickEventPoint::setPointerHandlerGrabber(QQuickPointerHandler *grabber) qCDebug(lcPointerHandlerDispatch) << this << grabber; m_grabber = QPointer<QObject>(grabber); m_grabberIsHandler = true; + m_sceneGrabPos = m_scenePos; } void QQuickEventPoint::setAccepted(bool accepted) diff --git a/src/quick/items/qquickevents_p_p.h b/src/quick/items/qquickevents_p_p.h index 5e663a4680..66393170ac 100644 --- a/src/quick/items/qquickevents_p_p.h +++ b/src/quick/items/qquickevents_p_p.h @@ -252,6 +252,7 @@ class Q_QUICK_PRIVATE_EXPORT QQuickEventPoint : public QObject Q_OBJECT Q_PROPERTY(QPointF scenePos READ scenePos) Q_PROPERTY(QPointF scenePressPos READ scenePressPos) + Q_PROPERTY(QPointF sceneGrabPos READ sceneGrabPos) Q_PROPERTY(QVector2D velocity READ velocity) Q_PROPERTY(State state READ state) Q_PROPERTY(quint64 pointId READ pointId) @@ -278,6 +279,7 @@ public: QQuickPointerEvent *pointerEvent() const; QPointF scenePos() const { return m_scenePos; } QPointF scenePressPos() const { return m_scenePressPos; } + QPointF sceneGrabPos() const { return m_sceneGrabPos; } QVector2D velocity() const { return m_velocity; } State state() const { return m_state; } quint64 pointId() const { return m_pointId; } @@ -297,6 +299,7 @@ public: private: QPointF m_scenePos; QPointF m_scenePressPos; + QPointF m_sceneGrabPos; QVector2D m_velocity; quint64 m_pointId; QPointer<QObject> m_grabber; |