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 <miikka.heikkinen@qt.io>
This commit is contained in:
Thomas Hartmann
2024-02-16 16:43:22 +01:00
committed by Tim Jenssen
parent 34f51df1ea
commit 2cfeb2cedd

View File

@@ -101,8 +101,9 @@ bool MoveManipulator::itemsCanReparented() const
void MoveManipulator::setDirectUpdateInNodeInstances(bool directUpdate) void MoveManipulator::setDirectUpdateInNodeInstances(bool directUpdate)
{ {
for (FormEditorItem* item : std::as_const(m_itemList)) { const auto allFormEditorItems = m_view->scene()->allFormEditorItems();
if (item && item->qmlItemNode().isValid()) for (FormEditorItem *item : std::as_const(m_itemList)) {
if (item && allFormEditorItems.contains(item) && item->qmlItemNode().isValid())
item->qmlItemNode().nodeInstance().setDirectUpdate(directUpdate); item->qmlItemNode().nodeInstance().setDirectUpdate(directUpdate);
} }
} }