diff options
author | Qt Forward Merge Bot <qt_forward_merge_bot@qt-project.org> | 2018-02-15 21:45:25 +0100 |
---|---|---|
committer | Qt Forward Merge Bot <qt_forward_merge_bot@qt-project.org> | 2018-02-15 21:45:25 +0100 |
commit | 242c9545af933c3b8ba30bb5d69263eea97142d0 (patch) | |
tree | 77ac3ffd7498fe8289b615923424a286c3894c4f /src/quick | |
parent | 238cc098d785b4fe76fbc8422b340d98ff8c1a1b (diff) | |
parent | 3e91062877c0853aff693799bc5e33cdf7aaad42 (diff) |
Merge remote-tracking branch 'origin/5.10.1' into 5.11
Change-Id: I64bf7d183bbd8af7282270097809d14a54ba0188
Diffstat (limited to 'src/quick')
-rw-r--r-- | src/quick/items/qquickwindow.cpp | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/src/quick/items/qquickwindow.cpp b/src/quick/items/qquickwindow.cpp index 6fda6ab6c6..adf977fe9a 100644 --- a/src/quick/items/qquickwindow.cpp +++ b/src/quick/items/qquickwindow.cpp @@ -1764,6 +1764,8 @@ void QQuickWindowPrivate::deliverMouseEvent(QQuickPointerMouseEvent *pointerEven QVector<QQuickItem *> targetItems = pointerTargets(contentItem, point->scenePosition(), false, false); for (QQuickItem *item : targetItems) { QQuickItemPrivate *itemPrivate = QQuickItemPrivate::get(item); + if (!itemPrivate->extra.isAllocated() || itemPrivate->extra->pointerHandlers.isEmpty()) + continue; pointerEvent->localize(item); if (!sendFilteredPointerEvent(pointerEvent, item)) { if (itemPrivate->handlePointerEvent(pointerEvent, true)) // avoid re-delivering to grabbers @@ -2302,10 +2304,9 @@ void QQuickWindowPrivate::deliverPointerEvent(QQuickPointerEvent *event) if (event->asPointerMouseEvent()) { deliverMouseEvent(event->asPointerMouseEvent()); // failsafe: never allow any kind of grab to persist after release - QQuickItem *grabber = q->mouseGrabberItem(); - if (event->isReleaseEvent() && event->buttons() == Qt::NoButton && grabber) { + if (event->isReleaseEvent() && event->buttons() == Qt::NoButton) { event->clearGrabbers(); - sendUngrabEvent(grabber, false); + sendUngrabEvent(q->mouseGrabberItem(), false); } } else if (event->asPointerTouchEvent()) { deliverTouchEvent(event->asPointerTouchEvent()); |