diff options
author | Frederik Gladhorn <frederik.gladhorn@theqtcompany.com> | 2016-07-19 18:44:09 +0200 |
---|---|---|
committer | Frederik Gladhorn <frederik.gladhorn@qt.io> | 2016-07-24 13:05:50 +0000 |
commit | aa48ecd09b56cee3fb34d48b70c6138a1d675f2a (patch) | |
tree | f14e235a772f69dc9cc314e16cc5d4113dc83061 | |
parent | 16e299fbb106f7d2de954afb1b921a80f4cd3e67 (diff) |
Add QQuickPointerEvent::grabbers
Returns a list of all items that grabbed a point of the event before.
Change-Id: Ifa7e6cc7486c4e1a7446a6bf3d4e62d19983ecf7
Reviewed-by: Frederik Gladhorn <frederik.gladhorn@qt.io>
-rw-r--r-- | src/quick/items/qquickevents.cpp | 20 | ||||
-rw-r--r-- | src/quick/items/qquickevents_p_p.h | 3 |
2 files changed, 23 insertions, 0 deletions
diff --git a/src/quick/items/qquickevents.cpp b/src/quick/items/qquickevents.cpp index 96eb59f518..ea1a6e263e 100644 --- a/src/quick/items/qquickevents.cpp +++ b/src/quick/items/qquickevents.cpp @@ -594,6 +594,14 @@ QMouseEvent *QQuickPointerMouseEvent::asMouseEvent() const return static_cast<QMouseEvent *>(m_event); } +QVector<QQuickItem *> QQuickPointerMouseEvent::grabbers() const +{ + QVector<QQuickItem *> result; + if (QQuickItem *grabber = m_mousePoint->grabber()) + result << grabber; + return result; +} + bool QQuickPointerTouchEvent::allPointsAccepted() const { for (int i = 0; i < m_pointCount; ++i) { if (!m_touchPoints.at(i)->isAccepted()) @@ -602,6 +610,18 @@ bool QQuickPointerTouchEvent::allPointsAccepted() const { return true; } +QVector<QQuickItem *> QQuickPointerTouchEvent::grabbers() const +{ + QVector<QQuickItem *> result; + for (auto point : qAsConst(m_touchPoints)) { + if (QQuickItem *grabber = point->grabber()) { + if (!result.contains(grabber)) + result << grabber; + } + } + return result; +} + /*! \internal Populate the reusable synth-mouse event from one touchpoint. diff --git a/src/quick/items/qquickevents_p_p.h b/src/quick/items/qquickevents_p_p.h index 3cec7c782a..59b211e43e 100644 --- a/src/quick/items/qquickevents_p_p.h +++ b/src/quick/items/qquickevents_p_p.h @@ -364,6 +364,7 @@ public: // helpers for C++ only (during event delivery) virtual int pointCount() const = 0; virtual QQuickEventPoint *point(int i) const = 0; virtual QQuickEventPoint *pointById(quint64 pointId) const = 0; + virtual QVector<QQuickItem *> grabbers() const = 0; protected: @@ -391,6 +392,7 @@ public: QQuickEventPoint *point(int i) const override; QQuickEventPoint *pointById(quint64 pointId) const override; bool allPointsAccepted() const override; + QVector<QQuickItem *> grabbers() const override; QMouseEvent *asMouseEvent() const; @@ -413,6 +415,7 @@ public: QQuickEventPoint *pointById(quint64 pointId) const override; const QTouchEvent::TouchPoint *touchPointById(int pointId) const; bool allPointsAccepted() const override; + QVector<QQuickItem *> grabbers() const override; QMouseEvent *syntheticMouseEvent(int pointID, QQuickItem *relativeTo) const; QTouchEvent *touchEventForItem(const QList<const QQuickEventPoint *> &newPoints, QQuickItem *relativeTo) const; |