diff options
-rw-r--r-- | src/quick/items/qquickitem.cpp | 6 | ||||
-rw-r--r-- | src/quick/util/qquickdeliveryagent.cpp | 5 | ||||
-rw-r--r-- | src/quick/util/qquickdeliveryagent_p_p.h | 1 |
3 files changed, 9 insertions, 3 deletions
diff --git a/src/quick/items/qquickitem.cpp b/src/quick/items/qquickitem.cpp index 32009939df..ccbb8c557f 100644 --- a/src/quick/items/qquickitem.cpp +++ b/src/quick/items/qquickitem.cpp @@ -5561,8 +5561,8 @@ bool QQuickItemPrivate::anyPointerHandlerWants(const QPointerEvent *event, const /*! \internal Deliver the \a event to all this item's PointerHandlers, but skip - HoverHandlers if the event is a QMouseEvent (they are visited in - QQuickDeliveryAgentPrivate::deliverHoverEventToItem()), and skip handlers + HoverHandlers if the event is a QMouseEvent or QWheelEvent (they are visited + in QQuickDeliveryAgentPrivate::deliverHoverEventToItem()), and skip handlers that are in QQuickPointerHandlerPrivate::deviceDeliveryTargets(). If \a avoidGrabbers is true, also skip delivery to any handler that is exclusively or passively grabbing any point within \a event @@ -5574,7 +5574,7 @@ bool QQuickItemPrivate::handlePointerEvent(QPointerEvent *event, bool avoidGrabb if (extra.isAllocated()) { for (QQuickPointerHandler *handler : extra->pointerHandlers) { bool avoidThisHandler = false; - if (QQuickDeliveryAgentPrivate::isMouseEvent(event) && + if (QQuickDeliveryAgentPrivate::isMouseOrWheelEvent(event) && qmlobject_cast<const QQuickHoverHandler *>(handler)) { avoidThisHandler = true; } else if (avoidGrabbers) { diff --git a/src/quick/util/qquickdeliveryagent.cpp b/src/quick/util/qquickdeliveryagent.cpp index 97ca80dc78..794ac70a25 100644 --- a/src/quick/util/qquickdeliveryagent.cpp +++ b/src/quick/util/qquickdeliveryagent.cpp @@ -1389,6 +1389,11 @@ bool QQuickDeliveryAgentPrivate::isMouseEvent(const QPointerEvent *ev) } } +bool QQuickDeliveryAgentPrivate::isMouseOrWheelEvent(const QPointerEvent *ev) +{ + return isMouseEvent(ev) || ev->type() == QEvent::Wheel; +} + bool QQuickDeliveryAgentPrivate::isHoverEvent(const QPointerEvent *ev) { switch (ev->type()) { diff --git a/src/quick/util/qquickdeliveryagent_p_p.h b/src/quick/util/qquickdeliveryagent_p_p.h index efd3431817..66db4bc88c 100644 --- a/src/quick/util/qquickdeliveryagent_p_p.h +++ b/src/quick/util/qquickdeliveryagent_p_p.h @@ -139,6 +139,7 @@ public: static bool anyPointGrabbed(const QPointerEvent *ev); static bool allPointsGrabbed(const QPointerEvent *ev); static bool isMouseEvent(const QPointerEvent *ev); + static bool isMouseOrWheelEvent(const QPointerEvent *ev); static bool isHoverEvent(const QPointerEvent *ev); static bool isTouchEvent(const QPointerEvent *ev); static bool isTabletEvent(const QPointerEvent *ev); |