@@ -253,6 +253,7 @@ void DirectionalDragArea::touchOwnershipEvent(TouchOwnershipEvent *event)
253 if (event->gained()) {
253 if (event->gained()) {
254 QVector<int> ids;
254 QVector<int> ids;
255 ids.append(event->touchId());
255 ids.append(event->touchId());
256+ DDA_DEBUG("grabbing touch");
256 grabTouchPoints(ids);
257 grabTouchPoints(ids);
258 // Work around for Qt bug. If we grab a touch that is being used for mouse pointer
259 // Work around for Qt bug. If we grab a touch that is being used for mouse pointer
@@ -261,8 +262,9 @@ void DirectionalDragArea::touchOwnershipEvent(TouchOwnershipEvent *event)
261 // TODO: Report bug to Qt
262 // TODO: Report bug to Qt
262 if (window()) {
263 if (window()) {
263 QQuickWindowPrivate *windowPrivate = QQuickWindowPrivate::get(window());
264 QQuickWindowPrivate *windowPrivate = QQuickWindowPrivate::get(window());
264− if (windowPrivate->touchMouseId == event->touchId()) {
265+ if (windowPrivate->touchMouseId == event->touchId() && window()->mouseGrabberItem()) {
265− grabMouse();
266+ DDA_DEBUG("removing mouse grabber");
267+ window()->mouseGrabberItem()->ungrabMouse();