diff options
Diffstat (limited to 'src/quick')
-rw-r--r-- | src/quick/items/qquickevents.cpp | 16 | ||||
-rw-r--r-- | src/quick/items/qquickevents_p_p.h | 11 |
2 files changed, 19 insertions, 8 deletions
diff --git a/src/quick/items/qquickevents.cpp b/src/quick/items/qquickevents.cpp index 5f6cadaf00..c04fbeea6e 100644 --- a/src/quick/items/qquickevents.cpp +++ b/src/quick/items/qquickevents.cpp @@ -492,7 +492,7 @@ void QQuickPointerEvent::initFromMouse(QMouseEvent *ev) { } if (!m_mousePoint) - m_mousePoint = new QQuickEventPoint; + m_mousePoint = new QQuickEventPoint(this); m_pointCount = 1; m_mousePoint->reset(state, ev->windowPos(), 0, ev->timestamp()); // mouse is 0 } @@ -507,7 +507,7 @@ void QQuickPointerEvent::initFromTouch(QTouchEvent *ev) { m_pointCount = tps.count(); m_touchPoints.reserve(m_pointCount); for (int i = m_touchPoints.size(); i < m_pointCount; ++i) - m_touchPoints.insert(i, new QQuickEventTouchPoint); + m_touchPoints.insert(i, new QQuickEventTouchPoint(this)); for (int i = 0; i < m_pointCount; ++i) m_touchPoints.at(i)->reset(tps.at(i), ev->timestamp()); @@ -563,6 +563,18 @@ bool QQuickPointerEvent::isTabletEvent() const } } +QQuickEventPoint::QQuickEventPoint(QQuickPointerEvent *parent) + : QObject(parent), m_pointId(0), m_timestamp(0), m_pressTimestamp(0), + m_state(Qt::TouchPointReleased), m_valid(false), m_accept(false) +{ + Q_UNUSED(m_reserved); +} + +QQuickPointerEvent *QQuickEventPoint::pointerEvent() const +{ + return static_cast<QQuickPointerEvent *>(parent()); +} + QQuickEventPoint *QQuickPointerEvent::point(int i) const { if (Q_UNLIKELY(i < 0 || i >= m_pointCount)) return nullptr; diff --git a/src/quick/items/qquickevents_p_p.h b/src/quick/items/qquickevents_p_p.h index f9668eb434..ed75556d6a 100644 --- a/src/quick/items/qquickevents_p_p.h +++ b/src/quick/items/qquickevents_p_p.h @@ -238,6 +238,8 @@ private: bool _accepted; }; +class QQuickPointerEvent; + class Q_QUICK_PRIVATE_EXPORT QQuickEventPoint : public QObject { Q_OBJECT @@ -248,11 +250,7 @@ class Q_QUICK_PRIVATE_EXPORT QQuickEventPoint : public QObject Q_PROPERTY(bool accepted READ isAccepted WRITE setAccepted) public: - QQuickEventPoint() : QObject(), m_pointId(0), m_timestamp(0), m_pressTimestamp(0), - m_state(Qt::TouchPointReleased), m_valid(false), m_accept(false) - { - Q_UNUSED(m_reserved); - } + QQuickEventPoint(QQuickPointerEvent *parent); void reset(Qt::TouchPointState state, QPointF scenePos, quint64 pointId, ulong timestamp) { @@ -269,6 +267,7 @@ public: void invalidate() { m_valid = false; } + QQuickPointerEvent *pointerEvent() const; QPointF scenePos() const { return m_scenePos; } Qt::TouchPointState state() const { return m_state; } quint64 pointId() const { return m_pointId; } @@ -296,7 +295,7 @@ class Q_QUICK_PRIVATE_EXPORT QQuickEventTouchPoint : public QQuickEventPoint Q_PROPERTY(QPointerUniqueId uniqueId READ uniqueId) public: - QQuickEventTouchPoint() : QQuickEventPoint(), m_rotation(0), m_pressure(0) { } + QQuickEventTouchPoint(QQuickPointerEvent *parent) : QQuickEventPoint(parent), m_rotation(0), m_pressure(0) { } void reset(const QTouchEvent::TouchPoint &tp, ulong timestamp) { |