aboutsummaryrefslogtreecommitdiffstats
path: root/src/quick/items/qquickwindow.cpp
diff options
context:
space:
mode:
authorQt Forward Merge Bot <qt_forward_merge_bot@qt-project.org>2018-02-15 21:45:25 +0100
committerQt Forward Merge Bot <qt_forward_merge_bot@qt-project.org>2018-02-15 21:45:25 +0100
commit242c9545af933c3b8ba30bb5d69263eea97142d0 (patch)
tree77ac3ffd7498fe8289b615923424a286c3894c4f /src/quick/items/qquickwindow.cpp
parent238cc098d785b4fe76fbc8422b340d98ff8c1a1b (diff)
parent3e91062877c0853aff693799bc5e33cdf7aaad42 (diff)
Merge remote-tracking branch 'origin/5.10.1' into 5.11
Diffstat (limited to 'src/quick/items/qquickwindow.cpp')
-rw-r--r--src/quick/items/qquickwindow.cpp7
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());