From d872ca504c5fa6292faaf9b65ff49edf74eabeb0 Mon Sep 17 00:00:00 2001 From: Marco Martin Date: Wed, 18 Sep 2019 14:59:37 +0200 Subject: [PATCH] keep mouse grab grab must never be stolen by flickables --- components/containmentlayoutmanager/itemcontainer.cpp | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/components/containmentlayoutmanager/itemcontainer.cpp b/components/containmentlayoutmanager/itemcontainer.cpp index e989d25b1..97b90c3f0 100644 --- a/components/containmentlayoutmanager/itemcontainer.cpp +++ b/components/containmentlayoutmanager/itemcontainer.cpp @@ -53,6 +53,7 @@ ItemContainer::ItemContainer(QQuickItem *parent) }); + setKeepMouseGrab(true); m_sizeHintAdjustTimer = new QTimer(this); m_sizeHintAdjustTimer->setSingleShot(true); m_sizeHintAdjustTimer->setInterval(0); @@ -476,6 +477,7 @@ bool ItemContainer::childMouseEventFilter(QQuickItem *item, QEvent *event) m_mouseDownPosition = me->windowPos(); if (m_editMode && !wasEditMode) { + event->accept(); return true; } @@ -485,6 +487,8 @@ bool ItemContainer::childMouseEventFilter(QQuickItem *item, QEvent *event) if (!m_editMode && QPointF(me->windowPos() - m_mouseDownPosition).manhattanLength() >= QGuiApplication::styleHints()->startDragDistance()) { m_editModeTimer->stop(); + } else if (m_editMode) { + event->accept(); } } else if (event->type() == QEvent::MouseButtonRelease) { @@ -492,6 +496,7 @@ bool ItemContainer::childMouseEventFilter(QQuickItem *item, QEvent *event) m_mouseDown = false; m_mouseSynthetizedFromTouch = false; ungrabMouse(); + event->accept(); m_dragActive = false; if (m_editMode) { emit dragActiveChanged(); @@ -555,6 +560,7 @@ void ItemContainer::mouseReleaseEvent(QMouseEvent *event) if (m_editMode) { emit dragActiveChanged(); } + event->accept(); } void ItemContainer::mouseMoveEvent(QMouseEvent *event) @@ -594,6 +600,7 @@ void ItemContainer::mouseMoveEvent(QMouseEvent *event) emit userDrag(QPointF(x(), y()), event->pos()); } m_lastMousePosition = event->windowPos(); + event->accept(); } void ItemContainer::mouseUngrabEvent()