aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorFrederik Gladhorn <frederik.gladhorn@theqtcompany.com>2016-07-19 18:44:09 +0200
committerFrederik Gladhorn <frederik.gladhorn@qt.io>2016-07-24 13:05:50 +0000
commitaa48ecd09b56cee3fb34d48b70c6138a1d675f2a (patch)
treef14e235a772f69dc9cc314e16cc5d4113dc83061
parent16e299fbb106f7d2de954afb1b921a80f4cd3e67 (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.cpp20
-rw-r--r--src/quick/items/qquickevents_p_p.h3
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;