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)
{
const auto allFormEditorItems = m_view->scene()->allFormEditorItems();
for (FormEditorItem *item : std::as_const(m_itemList)) {
if (item && item->qmlItemNode().isValid())
if (item && allFormEditorItems.contains(item) && item->qmlItemNode().isValid())
item->qmlItemNode().nodeInstance().setDirectUpdate(directUpdate);
}
}