From b295e7a4b157c21ce6fa50d6dc0862bd4bcae268 Mon Sep 17 00:00:00 2001 From: Thomas Hartmann Date: Fri, 16 Feb 2024 16:43:22 +0100 Subject: [PATCH] QmlDesigner: Fix crash observed during drag and drop MoveManipulator::end() is called from the dragtool and in this case m_itemList can contain a dangling pointer. m_view->scene()->allFormEditorItems().contains(item) is checking for this case. Change-Id: I367600d7136233d32c9c1683c1be0afcf928fc58 Reviewed-by: Miikka Heikkinen (cherry picked from commit 2cfeb2ceddc78118a0a50c60f132aa7cc047e709) Reviewed-by: Tim Jenssen --- .../qmldesigner/components/formeditor/movemanipulator.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/plugins/qmldesigner/components/formeditor/movemanipulator.cpp b/src/plugins/qmldesigner/components/formeditor/movemanipulator.cpp index 167282ea90f..516e7a3c609 100644 --- a/src/plugins/qmldesigner/components/formeditor/movemanipulator.cpp +++ b/src/plugins/qmldesigner/components/formeditor/movemanipulator.cpp @@ -101,8 +101,9 @@ bool MoveManipulator::itemsCanReparented() const void MoveManipulator::setDirectUpdateInNodeInstances(bool directUpdate) { - for (FormEditorItem* item : std::as_const(m_itemList)) { - if (item && item->qmlItemNode().isValid()) + const auto allFormEditorItems = m_view->scene()->allFormEditorItems(); + for (FormEditorItem *item : std::as_const(m_itemList)) { + if (item && allFormEditorItems.contains(item) && item->qmlItemNode().isValid()) item->qmlItemNode().nodeInstance().setDirectUpdate(directUpdate); } }