From cd004cdf98472f8caeb60bbe22fe97c2c7f8dd85 Mon Sep 17 00:00:00 2001
From: Thomas Hartmann <Thomas.Hartmann@nokia.com>
Date: Tue, 18 May 2010 14:45:54 +0200
Subject: [PATCH] QmlDesigner: avoid crash for Components and copy and paste

We have to set the proper fileUrl on all models
---
 .../components/integration/designdocumentcontroller.cpp    | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/plugins/qmldesigner/components/integration/designdocumentcontroller.cpp b/src/plugins/qmldesigner/components/integration/designdocumentcontroller.cpp
index 3c693197693..5c38be2dcbd 100644
--- a/src/plugins/qmldesigner/components/integration/designdocumentcontroller.cpp
+++ b/src/plugins/qmldesigner/components/integration/designdocumentcontroller.cpp
@@ -461,6 +461,7 @@ void DesignDocumentController::copySelected()
 {
     QScopedPointer<Model> model(Model::create("import Qt 4.7; Qt/Rectangle"));
     model->setMetaInfo(m_d->model->metaInfo());
+    model->setFileUrl(m_d->model->fileUrl());
 
     Q_ASSERT(model);
 
@@ -573,6 +574,8 @@ void DesignDocumentController::paste()
 
     if (rootNode.id() == "designer__Selection") {
         QList<ModelNode> selectedNodes = rootNode.allDirectSubModelNodes();
+        qDebug() << rootNode;
+        qDebug() << selectedNodes;
         model->detachView(&view);
         m_d->model->attachView(&view);
 
@@ -635,7 +638,9 @@ void DesignDocumentController::paste()
         QString defaultProperty(targetNode.metaInfo().defaultProperty());
 
         scatterItem(pastedNode, targetNode);
-        targetNode.nodeListProperty(defaultProperty).reparentHere(pastedNode);
+        if (targetNode.nodeListProperty(defaultProperty).isValid()) {
+            targetNode.nodeListProperty(defaultProperty).reparentHere(pastedNode);
+        }
 
         view.setSelectedModelNodes(QList<ModelNode>() << pastedNode);
     }
-- 
GitLab