From a09902ec17a55159e4fae87626cd2acb50eb8a29 Mon Sep 17 00:00:00 2001
From: Marco Bubke <marco.bubke@nokia.com>
Date: Tue, 21 Sep 2010 17:38:05 +0200
Subject: [PATCH] QmlDesigner.FormEditor: Items with no parent should be
 invisible except the root item

This is preventing visual artefacts.
---
 .../components/formeditor/formeditoritem.cpp         |  3 +++
 .../components/formeditor/formeditorscene.cpp        | 12 +++++++++++-
 2 files changed, 14 insertions(+), 1 deletion(-)

diff --git a/src/plugins/qmldesigner/components/formeditor/formeditoritem.cpp b/src/plugins/qmldesigner/components/formeditor/formeditoritem.cpp
index 7691710429f..be4a479ef88 100644
--- a/src/plugins/qmldesigner/components/formeditor/formeditoritem.cpp
+++ b/src/plugins/qmldesigner/components/formeditor/formeditoritem.cpp
@@ -72,7 +72,10 @@ void FormEditorItem::setup()
 {
     if (qmlItemNode().hasInstanceParent()) {
         setParentItem(scene()->itemForQmlItemNode(qmlItemNode().instanceParent().toQmlItemNode()));
+        setVisible(true);
         setOpacity(qmlItemNode().instanceValue("opacity").toDouble());
+    } else if (!qmlItemNode().isRootNode()){
+        setVisible(false);
     }
 
     setFlag(QGraphicsItem::ItemClipsChildrenToShape, qmlItemNode().instanceValue("clip").toBool());
diff --git a/src/plugins/qmldesigner/components/formeditor/formeditorscene.cpp b/src/plugins/qmldesigner/components/formeditor/formeditorscene.cpp
index 14058de2ac2..cbe41a4ace5 100644
--- a/src/plugins/qmldesigner/components/formeditor/formeditorscene.cpp
+++ b/src/plugins/qmldesigner/components/formeditor/formeditorscene.cpp
@@ -204,6 +204,8 @@ FormEditorItem *FormEditorScene::addFormEditorItem(const QmlItemNode &qmlItemNod
        manipulatorLayerItem()->update();
     }
 
+
+
     return formEditorItem;
 }
 
@@ -342,6 +344,12 @@ void FormEditorScene::reparentItem(const QmlItemNode &node, const QmlItemNode &n
 
     if (item->parentItem() != parentItem) {
         item->setParentItem(parentItem);
+        if (parentItem) {
+            item->setVisible(true);
+        } else {
+            item->setVisible(false);
+        }
+
         item->update();
     }
 }
@@ -370,8 +378,10 @@ void FormEditorScene::clearFormEditorItems()
     QList<QGraphicsItem*> itemList(items());
 
     foreach (QGraphicsItem *item, itemList) {
-        if (qgraphicsitem_cast<FormEditorItem* >(item))
+        if (qgraphicsitem_cast<FormEditorItem* >(item)) {
             item->setParentItem(0);
+            item->setVisible(false);
+        }
     }
 
     foreach (QGraphicsItem *item, itemList) {
-- 
GitLab