diff --git a/src/plugins/qmldesigner/designercore/instances/nodeinstance.cpp b/src/plugins/qmldesigner/designercore/instances/nodeinstance.cpp
index 03a60e030207bb83fb219d7dc94c7cd292be307c..c249a212c54dc5c8cbae2865731121807e61e4e3 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 71c911f0df68fdfa9b860de87d28eff4feeb1596..671e5b7c949fc13736c3b8b7cf8d55c6967474d0 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