From e2fd141372335f917c2d216051abb00d8b15f87c Mon Sep 17 00:00:00 2001 From: Shawn Rutledge Date: Thu, 1 Sep 2016 06:16:18 +0200 Subject: QQuickWindow: deliver updates to handlers even if they don't grab MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The "weak grab" concept depends on this. First we deliver to grabbers, then we deliver to non-grabbing handlers (but not to non-grabbing items). Avoid re-delivering to grabbing handlers which already received the same event. Change-Id: If51e1cd9372e3bed1daea3758e9ef8e37c0ba5e3 Reviewed-by: Jan Arve Sæther --- src/quick/items/qquickevents_p_p.h | 6 ++++++ 1 file changed, 6 insertions(+) (limited to 'src/quick/items/qquickevents_p_p.h') diff --git a/src/quick/items/qquickevents_p_p.h b/src/quick/items/qquickevents_p_p.h index 4a78e98705..bbfc34dacf 100644 --- a/src/quick/items/qquickevents_p_p.h +++ b/src/quick/items/qquickevents_p_p.h @@ -393,6 +393,7 @@ public: // helpers for C++ only (during event delivery) virtual const QQuickPointerTabletEvent *asPointerTabletEvent() const { return nullptr; } bool isValid() const { return m_event != nullptr; } virtual bool allPointsAccepted() const = 0; + virtual bool allPointsGrabbed() const = 0; bool isAccepted() { return m_event->isAccepted(); } void setAccepted(bool accepted) { m_event->setAccepted(accepted); } QVector unacceptedPressedPointScenePositions() const; @@ -402,6 +403,7 @@ public: // helpers for C++ only (during event delivery) virtual QQuickEventPoint *pointById(quint64 pointId) const = 0; virtual QVector grabbers() const = 0; virtual void clearGrabbers() const = 0; + virtual bool hasGrabber(const QQuickPointerHandler *handler) const = 0; ulong timestamp() const { return m_event->timestamp(); } @@ -430,8 +432,10 @@ public: QQuickEventPoint *point(int i) const override; QQuickEventPoint *pointById(quint64 pointId) const override; bool allPointsAccepted() const override; + bool allPointsGrabbed() const override; QVector grabbers() const override; void clearGrabbers() const override; + bool hasGrabber(const QQuickPointerHandler *handler) const override; QMouseEvent *asMouseEvent(const QPointF& localPos) const; @@ -461,8 +465,10 @@ public: QQuickEventPoint *pointById(quint64 pointId) const override; const QTouchEvent::TouchPoint *touchPointById(int pointId) const; bool allPointsAccepted() const override; + bool allPointsGrabbed() const override; QVector grabbers() const override; void clearGrabbers() const override; + bool hasGrabber(const QQuickPointerHandler *handler) const override; QMouseEvent *syntheticMouseEvent(int pointID, QQuickItem *relativeTo) const; QTouchEvent *touchEventForItem(QQuickItem *item, bool isFiltering = false) const; -- cgit v1.2.3