aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/quick/items/qquickevents.cpp9
-rw-r--r--src/quick/items/qquickevents_p_p.h3
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;