diff --git a/src/plugins/qmldesigner/designercore/include/nodeinstanceview.h b/src/plugins/qmldesigner/designercore/include/nodeinstanceview.h index d2aa710252210d3a30d689e4721e738d7109dbd6..1829c29e56d73313e76c7fd912071ab33eea7f96 100644 --- a/src/plugins/qmldesigner/designercore/include/nodeinstanceview.h +++ b/src/plugins/qmldesigner/designercore/include/nodeinstanceview.h @@ -111,7 +111,6 @@ public: private slots: void emitParentChanged(QObject *child); void refreshLocalFileProperty(const QString &path); - void removeIdFromContext(QObject *object); private: // functions NodeInstance rootNodeInstance() const; diff --git a/src/plugins/qmldesigner/designercore/instances/nodeinstanceview.cpp b/src/plugins/qmldesigner/designercore/instances/nodeinstanceview.cpp index d83cd9711aed650ee6cd4a8c51c964396f82be06..5acfb026a2e871aba2c9b9ec576ec634bda69a92 100644 --- a/src/plugins/qmldesigner/designercore/instances/nodeinstanceview.cpp +++ b/src/plugins/qmldesigner/designercore/instances/nodeinstanceview.cpp @@ -417,6 +417,11 @@ void NodeInstanceView::removeAllInstanceNodeRelationships() { // prevent destroyed() signals calling back + foreach (NodeInstance instance, m_objectInstanceHash.values()) { + if (instance.isValid()) + instance.setId(QString()); + } + //first the root object if (rootNodeInstance().internalObject()) rootNodeInstance().internalObject()->disconnect(); @@ -552,7 +557,8 @@ void NodeInstanceView::removeInstanceNodeRelationship(const ModelNode &node) { Q_ASSERT(m_nodeInstanceHash.contains(node)); NodeInstance instance = instanceForNode(node); - removeIdFromContext(instance.internalObject()); + if (instance.isValid()) + instance.setId(QString()); m_objectInstanceHash.remove(instanceForNode(node).internalObject()); m_nodeInstanceHash.remove(node); instance.makeInvalid(); @@ -627,6 +633,10 @@ void NodeInstanceView::activateBaseState() void NodeInstanceView::removeRecursiveChildRelationship(const ModelNode &removedNode) { + if (hasInstanceForNode(removedNode)) { + instanceForNode(removedNode).setId(QString()); + } + foreach (const ModelNode &childNode, removedNode.allDirectSubModelNodes()) removeRecursiveChildRelationship(childNode); @@ -695,16 +705,4 @@ void NodeInstanceView::refreshLocalFileProperty(const QString &path) } } -void NodeInstanceView::removeIdFromContext(QObject *object) -{ - if (hasInstanceForObject(object)) { - NodeInstance instance = instanceForObject(object); - if (instance.isValid()) { - QString id = instance.id(); - if (!id.isEmpty()) - engine()->rootContext()->setContextProperty(id, 0); - } - } -} - }