From b21b8a7acc3150c54de56ee504bc93533c9299ed Mon Sep 17 00:00:00 2001
From: Thomas Hartmann <Thomas.Hartmann@nokia.com>
Date: Thu, 23 Sep 2010 18:17:50 +0200
Subject: [PATCH] QmlDesigner.NodeInstances: implement doComponentComplete()

We have to call classBegin() on creation.
---
 .../qmldesigner/designercore/instances/nodeinstance.cpp    | 2 +-
 .../designercore/instances/qmlgraphicsitemnodeinstance.cpp | 7 ++++++-
 2 files changed, 7 insertions(+), 2 deletions(-)

diff --git a/src/plugins/qmldesigner/designercore/instances/nodeinstance.cpp b/src/plugins/qmldesigner/designercore/instances/nodeinstance.cpp
index 03a60e03020..c249a212c54 100644
--- a/src/plugins/qmldesigner/designercore/instances/nodeinstance.cpp
+++ b/src/plugins/qmldesigner/designercore/instances/nodeinstance.cpp
@@ -646,7 +646,7 @@ void NodeInstance::registerDeclarativeTypes()
 
 void NodeInstance::doComponentComplete()
 {
-
+    m_nodeInstance->doComponentComplete();
 }
 
 QString NodeInstance::id() const
diff --git a/src/plugins/qmldesigner/designercore/instances/qmlgraphicsitemnodeinstance.cpp b/src/plugins/qmldesigner/designercore/instances/qmlgraphicsitemnodeinstance.cpp
index 71c911f0df6..671e5b7c949 100644
--- a/src/plugins/qmldesigner/designercore/instances/qmlgraphicsitemnodeinstance.cpp
+++ b/src/plugins/qmldesigner/designercore/instances/qmlgraphicsitemnodeinstance.cpp
@@ -80,6 +80,8 @@ QmlGraphicsItemNodeInstance::Pointer QmlGraphicsItemNodeInstance::create(const N
 
     Pointer instance(new QmlGraphicsItemNodeInstance(qmlGraphicsItem, objectPair.second));
 
+    static_cast<QDeclarativeParserStatus*>(qmlGraphicsItem)->classBegin();
+
     if (objectToBeWrapped)
         instance->setDeleteHeldInstance(false); // the object isn't owned
 
@@ -288,8 +290,11 @@ void QmlGraphicsItemNodeInstance::resetVertical()
 
 void QmlGraphicsItemNodeInstance::doComponentComplete()
 {
-    if (qmlGraphicsItem())
+    if (qmlGraphicsItem()) {
+        if (static_cast<QDeclarativeItemPrivate*>(QGraphicsItemPrivate::get(qmlGraphicsItem()))->componentComplete)
+            return;
         static_cast<QDeclarativeParserStatus*>(qmlGraphicsItem())->componentComplete();
+    }
 }
 
 int QmlGraphicsItemNodeInstance::penWidth() const
-- 
GitLab