diff options
author | Shawn Rutledge <shawn.rutledge@qt.io> | 2016-09-01 06:16:18 +0200 |
---|---|---|
committer | Shawn Rutledge <shawn.rutledge@qt.io> | 2017-02-02 19:17:35 +0000 |
commit | e2fd141372335f917c2d216051abb00d8b15f87c (patch) | |
tree | 8521c470e66d1a1badeb3c3020774abc66d639f7 /src/quick/items/qquickitem.cpp | |
parent | 73e9dc0667935b7b403c10736775d24d6e22eb8c (diff) |
QQuickWindow: deliver updates to handlers even if they don't grab
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 <jan-arve.saether@qt.io>
Diffstat (limited to 'src/quick/items/qquickitem.cpp')
-rw-r--r-- | src/quick/items/qquickitem.cpp | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/src/quick/items/qquickitem.cpp b/src/quick/items/qquickitem.cpp index 98cc3112df..46e381db7d 100644 --- a/src/quick/items/qquickitem.cpp +++ b/src/quick/items/qquickitem.cpp @@ -5091,15 +5091,20 @@ void QQuickItemPrivate::deliverShortcutOverrideEvent(QKeyEvent *event) } } -void QQuickItemPrivate::handlePointerEvent(QQuickPointerEvent *event) +bool QQuickItemPrivate::handlePointerEvent(QQuickPointerEvent *event, bool avoidGrabber) { Q_Q(QQuickItem); + bool delivered = false; if (extra.isAllocated()) { for (QQuickPointerHandler *handler : extra->pointerHandlers) { qCDebug(lcPointerHandlerDispatch) << " delivering" << event << "to" << handler << "on" << q; - handler->handlePointerEvent(event); + if (!avoidGrabber || !event->hasGrabber(handler)) { + handler->handlePointerEvent(event); + delivered = true; + } } } + return delivered; } /*! |