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