From 061ae8b02c0a07f37251ad35235ed4555ada7283 Mon Sep 17 00:00:00 2001 From: Miikka Heikkinen Date: Thu, 22 Sep 2022 11:53:11 +0300 Subject: [PATCH] QmlDesigner: Delete material properly via material browser Deleting is now made the same way as deleting a selected node, so dangling references to the deleted material are removed. Fixes: QDS-7716 Change-Id: I552c328eb928bfc20e3e33caa0e817f6d22162cc Reviewed-by: Mahmoud Badri Reviewed-by: Reviewed-by: Qt CI Bot --- .../components/materialbrowser/materialbrowsermodel.cpp | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/src/plugins/qmldesigner/components/materialbrowser/materialbrowsermodel.cpp b/src/plugins/qmldesigner/components/materialbrowser/materialbrowsermodel.cpp index fea4a430a61..b5d85a4cb8b 100644 --- a/src/plugins/qmldesigner/components/materialbrowser/materialbrowsermodel.cpp +++ b/src/plugins/qmldesigner/components/materialbrowser/materialbrowsermodel.cpp @@ -288,8 +288,7 @@ void MaterialBrowserModel::removeMaterial(const ModelNode &material) void MaterialBrowserModel::deleteSelectedMaterial() { - if (isValidIndex(m_selectedIndex)) - m_materialList[m_selectedIndex].destroy(); + deleteMaterial(m_selectedIndex); } void MaterialBrowserModel::updateSelectedMaterial() @@ -387,7 +386,11 @@ void MaterialBrowserModel::pasteMaterialProperties(int idx) void MaterialBrowserModel::deleteMaterial(int idx) { - m_materialList[idx].destroy(); + if (isValidIndex(idx)) { + ModelNode node = m_materialList[idx]; + if (node.isValid()) + QmlObjectNode(node).destroy(); + } } void MaterialBrowserModel::renameMaterial(int idx, const QString &newName)