QmlDesigner: Optimize deleting nodes

- remove unnecessary call to directSubModelNodes()
- replace foreach with for (avoid unnecessary copies)

Change-Id: I42721a4c4e69f320664af8364f8baa0df0d11459
Reviewed-by: Miikka Heikkinen <miikka.heikkinen@qt.io>
Reviewed-by: Thomas Hartmann <thomas.hartmann@qt.io>
This commit is contained in:
Mahmoud Badri
2020-10-23 22:12:52 +03:00
parent 4a3bd72db8
commit 98d7b5b6e5

View File

@@ -693,35 +693,33 @@ void ModelNode::removeProperty(const PropertyName &name) const
model()->d->removeProperty(internalNode()->property(name));
}
/*! \brief removes this node from the node tree
*/
static QList<ModelNode> descendantNodes(const ModelNode &parent)
static QList<ModelNode> descendantNodes(const ModelNode &node)
{
QList<ModelNode> descendants(parent.directSubModelNodes());
foreach (const ModelNode &child, parent.directSubModelNodes()) {
const QList<ModelNode> children = node.directSubModelNodes();
QList<ModelNode> descendants = children;
for (const ModelNode &child : children)
descendants += descendantNodes(child);
}
return descendants;
}
static void removeModelNodeFromSelection(const ModelNode &node)
{
{ // remove nodes from the active selection:
// remove nodes from the active selection
QList<ModelNode> selectedList = node.view()->selectedModelNodes();
foreach (const ModelNode &childModelNode, descendantNodes(node))
selectedList.removeAll(childModelNode);
const QList<ModelNode> descendants = descendantNodes(node);
for (const ModelNode &descendantNode : descendants)
selectedList.removeAll(descendantNode);
selectedList.removeAll(node);
node.view()->setSelectedModelNodes(selectedList);
}
}
/*! \brief complete removes this ModelNode from the Model
*/
void ModelNode::destroy()
{