diff options
-rw-r--r-- | src/quick/items/qquickevents.cpp | 7 | ||||
-rw-r--r-- | src/quick/items/qquickwindow.cpp | 7 |
2 files changed, 3 insertions, 11 deletions
diff --git a/src/quick/items/qquickevents.cpp b/src/quick/items/qquickevents.cpp index 19dd81b6fc..3b14f72870 100644 --- a/src/quick/items/qquickevents.cpp +++ b/src/quick/items/qquickevents.cpp @@ -610,11 +610,8 @@ void QQuickEventPoint::setGrabberItem(QQuickItem *grabber) m_sceneGrabPos = m_scenePos; if (oldGrabberHandler) oldGrabberHandler->onGrabChanged(oldGrabberHandler, CancelGrabExclusive, this); - else if (oldGrabberItem && oldGrabberItem != grabber) { - auto pte = pointerEvent()->asPointerTouchEvent(); - if (pte && pte->asTouchEvent() && pte->asTouchEvent()->touchPointStates() == Qt::TouchPointReleased) - oldGrabberItem->touchUngrabEvent(); - } + else if (oldGrabberItem && oldGrabberItem != grabber && grabber && pointerEvent()->asPointerTouchEvent()) + oldGrabberItem->touchUngrabEvent(); for (QPointer<QQuickPointerHandler> passiveGrabber : m_passiveGrabbers) passiveGrabber->onGrabChanged(passiveGrabber, OverrideGrabPassive, this); } diff --git a/src/quick/items/qquickwindow.cpp b/src/quick/items/qquickwindow.cpp index e6f77ea69a..5538cadc06 100644 --- a/src/quick/items/qquickwindow.cpp +++ b/src/quick/items/qquickwindow.cpp @@ -748,7 +748,6 @@ void QQuickWindowPrivate::setMouseGrabber(QQuickItem *grabber) QQuickItem *oldGrabber = q->mouseGrabberItem(); qCDebug(DBG_MOUSE_TARGET) << "grabber" << oldGrabber << "->" << grabber; - bool fromTouch = false; if (grabber && touchMouseId != -1 && touchMouseDevice) { // update the touch item for mouse touch id to the new grabber @@ -759,7 +758,6 @@ void QQuickWindowPrivate::setMouseGrabber(QQuickItem *grabber) for (auto handler : point->passiveGrabbers()) point->cancelPassiveGrab(handler); } - fromTouch = true; } else { QQuickPointerEvent *event = QQuickPointerDevice::genericMouseDevice()->pointerEvent(); Q_ASSERT(event->pointCount() == 1); @@ -773,11 +771,8 @@ void QQuickWindowPrivate::setMouseGrabber(QQuickItem *grabber) if (oldGrabber) { QEvent e(QEvent::UngrabMouse); QSet<QQuickItem *> hasFiltered; - if (!sendFilteredMouseEvent(oldGrabber->parentItem(), oldGrabber, &e, &hasFiltered)) { + if (!sendFilteredMouseEvent(oldGrabber->parentItem(), oldGrabber, &e, &hasFiltered)) oldGrabber->mouseUngrabEvent(); - if (fromTouch) - oldGrabber->touchUngrabEvent(); - } } } |