From 565158bbb444a3e63391066b80e12f1c01a5c29c Mon Sep 17 00:00:00 2001 From: Marco Bubke <marco.bubke@nokia.com> Date: Wed, 12 May 2010 21:50:58 +0200 Subject: [PATCH] Always reset the id for an object in node instances Because we tested for the parent, the id of a root item never reset. This was hidden because if you remove a root item all child items was removed too. But if the object was not deleted by the root item and there was a binding the root item id, there was a dangling pointer. Task-Number: BAUHAUS-662 Reviewed-by: kkoehne --- .../designercore/instances/objectnodeinstance.cpp | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/src/plugins/qmldesigner/designercore/instances/objectnodeinstance.cpp b/src/plugins/qmldesigner/designercore/instances/objectnodeinstance.cpp index f0df1560c10..e52ca995d7c 100644 --- a/src/plugins/qmldesigner/designercore/instances/objectnodeinstance.cpp +++ b/src/plugins/qmldesigner/designercore/instances/objectnodeinstance.cpp @@ -123,13 +123,15 @@ void ObjectNodeInstance::destroy() { if (deleteHeldInstance()) { // Remove from old property - if (object() && modelNode().isValid() && modelNode().parentProperty().isValid()) { + if (object()) { setId(QString()); - NodeAbstractProperty parentProperty = modelNode().parentProperty(); - ModelNode parentNode = parentProperty.parentModelNode(); - if (parentNode.isValid() && nodeInstanceView()->hasInstanceForNode(parentNode)) { - NodeInstance parentInstance = nodeInstanceView()->instanceForNode(parentNode); - reparent(parentInstance, parentProperty.name(), NodeInstance() , QString()); + if (modelNode().isValid() && modelNode().parentProperty().isValid()) { + NodeAbstractProperty parentProperty = modelNode().parentProperty(); + ModelNode parentNode = parentProperty.parentModelNode(); + if (parentNode.isValid() && nodeInstanceView()->hasInstanceForNode(parentNode)) { + NodeInstance parentInstance = nodeInstanceView()->instanceForNode(parentNode); + reparent(parentInstance, parentProperty.name(), NodeInstance() , QString()); + } } } -- GitLab