summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThomas Hartmann <Thomas.Hartmann@nokia.com>2011-06-30 17:30:17 +0200
committerThomas Hartmann <Thomas.Hartmann@nokia.com>2011-06-30 17:36:09 +0200
commit3cfa37624395d23d48fddb7e91e83168fe1dfc3f (patch)
treede29095349cbc510f79a5470ea89450af77ea6c7
parentb18ef1ffb240506368459845fe1b9e932a49b44c (diff)
downloadqt-creator-3cfa37624395d23d48fddb7e91e83168fe1dfc3f.tar.gz
QmlDesigner: Fix wrong position for reparenting
Change-Id: Ie9d9a739e559d5cfc06849ff3e5c086e9ab2224c DoneBy: Marco Bubke Task-number: QTCREATORBUG-3962 Reviewed-on: http://codereview.qt.nokia.com/958 Reviewed-by: Qt Sanity Bot <qt_sanity_bot@ovi.com> Reviewed-by: Thomas Hartmann <Thomas.Hartmann@nokia.com>
-rw-r--r--share/qtcreator/qml/qmlpuppet/commands/childrenchangedcommand.cpp13
-rw-r--r--share/qtcreator/qml/qmlpuppet/commands/childrenchangedcommand.h6
-rw-r--r--share/qtcreator/qml/qmlpuppet/instances/nodeinstanceserver.cpp30
-rw-r--r--share/qtcreator/qml/qmlpuppet/qmlpuppet/instances/qt4informationnodeinstanceserver.cpp12
-rw-r--r--src/plugins/qmldesigner/components/formeditor/abstractformeditortool.h1
-rw-r--r--src/plugins/qmldesigner/components/formeditor/anchortool.cpp4
-rw-r--r--src/plugins/qmldesigner/components/formeditor/anchortool.h2
-rw-r--r--src/plugins/qmldesigner/components/formeditor/dragtool.cpp7
-rw-r--r--src/plugins/qmldesigner/components/formeditor/dragtool.h1
-rw-r--r--src/plugins/qmldesigner/components/formeditor/formeditorview.cpp2
-rw-r--r--src/plugins/qmldesigner/components/formeditor/itemcreatortool.cpp4
-rw-r--r--src/plugins/qmldesigner/components/formeditor/itemcreatortool.h1
-rw-r--r--src/plugins/qmldesigner/components/formeditor/movemanipulator.cpp25
-rw-r--r--src/plugins/qmldesigner/components/formeditor/movemanipulator.h1
-rw-r--r--src/plugins/qmldesigner/components/formeditor/movetool.cpp5
-rw-r--r--src/plugins/qmldesigner/components/formeditor/movetool.h3
-rw-r--r--src/plugins/qmldesigner/components/formeditor/resizetool.cpp12
-rw-r--r--src/plugins/qmldesigner/components/formeditor/resizetool.h2
-rw-r--r--src/plugins/qmldesigner/components/formeditor/selectiontool.cpp5
-rw-r--r--src/plugins/qmldesigner/components/formeditor/selectiontool.h2
-rw-r--r--src/plugins/qmldesigner/designercore/include/nodeinstanceview.h3
-rw-r--r--src/plugins/qmldesigner/designercore/instances/nodeinstanceview.cpp23
22 files changed, 126 insertions, 38 deletions
diff --git a/share/qtcreator/qml/qmlpuppet/commands/childrenchangedcommand.cpp b/share/qtcreator/qml/qmlpuppet/commands/childrenchangedcommand.cpp
index 7559998c81..502778d3f6 100644
--- a/share/qtcreator/qml/qmlpuppet/commands/childrenchangedcommand.cpp
+++ b/share/qtcreator/qml/qmlpuppet/commands/childrenchangedcommand.cpp
@@ -39,9 +39,10 @@ ChildrenChangedCommand::ChildrenChangedCommand()
{
}
-ChildrenChangedCommand::ChildrenChangedCommand(qint32 parentInstanceId, const QVector<qint32> &children)
+ChildrenChangedCommand::ChildrenChangedCommand(qint32 parentInstanceId, const QVector<qint32> &children, const QVector<InformationContainer> &informationVector)
: m_parentInstanceId(parentInstanceId),
- m_childrenVector(children)
+ m_childrenVector(children),
+ m_informationVector(informationVector)
{
}
@@ -55,11 +56,16 @@ qint32 ChildrenChangedCommand::parentInstanceId() const
return m_parentInstanceId;
}
+QVector<InformationContainer> ChildrenChangedCommand::informations() const
+{
+ return m_informationVector;
+}
+
QDataStream &operator<<(QDataStream &out, const ChildrenChangedCommand &command)
{
out << command.parentInstanceId();
out << command.childrenInstances();
-
+ out << command.informations();
return out;
}
@@ -67,6 +73,7 @@ QDataStream &operator>>(QDataStream &in, ChildrenChangedCommand &command)
{
in >> command.m_parentInstanceId;
in >> command.m_childrenVector;
+ in >> command.m_informationVector;
return in;
}
diff --git a/share/qtcreator/qml/qmlpuppet/commands/childrenchangedcommand.h b/share/qtcreator/qml/qmlpuppet/commands/childrenchangedcommand.h
index 8441c852a1..e89d88a4a0 100644
--- a/share/qtcreator/qml/qmlpuppet/commands/childrenchangedcommand.h
+++ b/share/qtcreator/qml/qmlpuppet/commands/childrenchangedcommand.h
@@ -35,7 +35,7 @@
#include <QMetaType>
#include <QVector>
-
+#include "informationcontainer.h"
namespace QmlDesigner {
@@ -44,14 +44,16 @@ class ChildrenChangedCommand
friend QDataStream &operator>>(QDataStream &in, ChildrenChangedCommand &command);
public:
ChildrenChangedCommand();
- ChildrenChangedCommand(qint32 parentInstanceId, const QVector<qint32> &childrenInstances);
+ ChildrenChangedCommand(qint32 parentInstanceId, const QVector<qint32> &childrenInstancesconst, const QVector<InformationContainer> &informationVector);
QVector<qint32> childrenInstances() const;
qint32 parentInstanceId() const;
+ QVector<InformationContainer> informations() const;
private:
qint32 m_parentInstanceId;
QVector<qint32> m_childrenVector;
+ QVector<InformationContainer> m_informationVector;
};
QDataStream &operator<<(QDataStream &out, const ChildrenChangedCommand &command);
diff --git a/share/qtcreator/qml/qmlpuppet/instances/nodeinstanceserver.cpp b/share/qtcreator/qml/qmlpuppet/instances/nodeinstanceserver.cpp
index 7c5e49fd71..84f7d8fcd2 100644
--- a/share/qtcreator/qml/qmlpuppet/instances/nodeinstanceserver.cpp
+++ b/share/qtcreator/qml/qmlpuppet/instances/nodeinstanceserver.cpp
@@ -812,17 +812,7 @@ NodeInstanceClientInterface *NodeInstanceServer::nodeInstanceClient() const
return m_nodeInstanceClient;
}
-ChildrenChangedCommand NodeInstanceServer::createChildrenChangedCommand(const ServerNodeInstance &parentInstance, const QList<ServerNodeInstance> &instanceList) const
-{
- QVector<qint32> instanceVector;
-
- foreach (const ServerNodeInstance &instance, instanceList)
- instanceVector.append(instance.instanceId());
-
- return ChildrenChangedCommand(parentInstance.instanceId(), instanceVector);
-}
-
-InformationChangedCommand NodeInstanceServer::createAllInformationChangedCommand(const QList<ServerNodeInstance> &instanceList, bool initial) const
+static QVector<InformationContainer> createInformationVector(const QList<ServerNodeInstance> &instanceList, bool initial)
{
QVector<InformationContainer> informationVector;
@@ -894,7 +884,23 @@ InformationChangedCommand NodeInstanceServer::createAllInformationChangedCommand
}
- return InformationChangedCommand(informationVector);
+ return informationVector;
+}
+
+
+ChildrenChangedCommand NodeInstanceServer::createChildrenChangedCommand(const ServerNodeInstance &parentInstance, const QList<ServerNodeInstance> &instanceList) const
+{
+ QVector<qint32> instanceVector;
+
+ foreach (const ServerNodeInstance &instance, instanceList)
+ instanceVector.append(instance.instanceId());
+
+ return ChildrenChangedCommand(parentInstance.instanceId(), instanceVector, createInformationVector(instanceList, false));
+}
+
+InformationChangedCommand NodeInstanceServer::createAllInformationChangedCommand(const QList<ServerNodeInstance> &instanceList, bool initial) const
+{
+ return InformationChangedCommand(createInformationVector(instanceList, initial));
}
static bool supportedVariantType(QVariant::Type type)
diff --git a/share/qtcreator/qml/qmlpuppet/qmlpuppet/instances/qt4informationnodeinstanceserver.cpp b/share/qtcreator/qml/qmlpuppet/qmlpuppet/instances/qt4informationnodeinstanceserver.cpp
index ab8831d116..14cfabb1bc 100644
--- a/share/qtcreator/qml/qmlpuppet/qmlpuppet/instances/qt4informationnodeinstanceserver.cpp
+++ b/share/qtcreator/qml/qmlpuppet/qmlpuppet/instances/qt4informationnodeinstanceserver.cpp
@@ -170,20 +170,22 @@ void Qt4InformationNodeInstanceServer::collectItemChangesAndSendChangeCommands()
}
}
+ informationChangedInstanceSet.subtract(m_parentChangedSet);
+
clearChangedPropertyList();
resetAllItems();
+ if (!m_parentChangedSet.isEmpty()) {
+ sendChildrenChangedCommand(m_parentChangedSet.toList());
+ m_parentChangedSet.clear();
+ }
+
if (!informationChangedInstanceSet.isEmpty())
nodeInstanceClient()->informationChanged(createAllInformationChangedCommand(informationChangedInstanceSet.toList()));
if (!propertyChangedList.isEmpty())
nodeInstanceClient()->valuesChanged(createValuesChangedCommand(propertyChangedList));
- if (!m_parentChangedSet.isEmpty()) {
- sendChildrenChangedCommand(m_parentChangedSet.toList());
- m_parentChangedSet.clear();
- }
-
if (adjustSceneRect) {
QRectF boundingRect = rootNodeInstance().boundingRect();
if (boundingRect.isValid()) {
diff --git a/src/plugins/qmldesigner/components/formeditor/abstractformeditortool.h b/src/plugins/qmldesigner/components/formeditor/abstractformeditortool.h
index eed1ec3088..f61ef51631 100644
--- a/src/plugins/qmldesigner/components/formeditor/abstractformeditortool.h
+++ b/src/plugins/qmldesigner/components/formeditor/abstractformeditortool.h
@@ -82,6 +82,7 @@ public:
virtual void formEditorItemsChanged(const QList<FormEditorItem*> &itemList) = 0;
virtual void instancesCompleted(const QList<FormEditorItem*> &itemList) = 0;
+ virtual void instancesParentChanged(const QList<FormEditorItem*> &itemList) = 0;
void setItems(const QList<FormEditorItem*> &itemList);
QList<FormEditorItem*> items() const;
diff --git a/src/plugins/qmldesigner/components/formeditor/anchortool.cpp b/src/plugins/qmldesigner/components/formeditor/anchortool.cpp
index 85d3707e69..b058a50249 100644
--- a/src/plugins/qmldesigner/components/formeditor/anchortool.cpp
+++ b/src/plugins/qmldesigner/components/formeditor/anchortool.cpp
@@ -220,6 +220,10 @@ void AnchorTool::instancesCompleted(const QList<FormEditorItem*> &/*itemList*/)
{
}
+void AnchorTool::instancesParentChanged(const QList<FormEditorItem *> &/*itemList*/)
+{
+}
+
AnchorLineHandleItem* AnchorTool::topAnchorLineHandleItem(const QList<QGraphicsItem*> & itemList)
{
foreach (QGraphicsItem *item, itemList) {
diff --git a/src/plugins/qmldesigner/components/formeditor/anchortool.h b/src/plugins/qmldesigner/components/formeditor/anchortool.h
index b5a19a4c79..27fc531fca 100644
--- a/src/plugins/qmldesigner/components/formeditor/anchortool.h
+++ b/src/plugins/qmldesigner/components/formeditor/anchortool.h
@@ -74,6 +74,8 @@ public:
void formEditorItemsChanged(const QList<FormEditorItem*> &itemList);
void instancesCompleted(const QList<FormEditorItem*> &itemList);
+ void instancesParentChanged(const QList<FormEditorItem *> &itemList);
+
static AnchorLineHandleItem* topAnchorLineHandleItem(const QList<QGraphicsItem*> & itemList);
diff --git a/src/plugins/qmldesigner/components/formeditor/dragtool.cpp b/src/plugins/qmldesigner/components/formeditor/dragtool.cpp
index 435b86e3d7..38556c08cb 100644
--- a/src/plugins/qmldesigner/components/formeditor/dragtool.cpp
+++ b/src/plugins/qmldesigner/components/formeditor/dragtool.cpp
@@ -217,6 +217,12 @@ void DragTool::instancesCompleted(const QList<FormEditorItem*> &itemList)
QmlDesignerItemLibraryDragAndDrop::CustomDragAndDrop::hide();
}
+void DragTool::instancesParentChanged(const QList<FormEditorItem *> &itemList)
+{
+ m_moveManipulator.synchronizeInstanceParent(itemList);
+}
+
+
void DragTool::clearMoveDelay()
{
if (!m_blockMove)
@@ -381,6 +387,7 @@ void DragTool::dragMoveEvent(QGraphicsSceneDragDropEvent * event)
QTimer::singleShot(1000, m_timerHandler.data(), SLOT(clearMoveDelay()));
}
}
+
if (event->mimeData()->hasFormat("application/vnd.bauhaus.libraryresource")) {
}
}
diff --git a/src/plugins/qmldesigner/components/formeditor/dragtool.h b/src/plugins/qmldesigner/components/formeditor/dragtool.h
index d397c73158..f2a8db7f10 100644
--- a/src/plugins/qmldesigner/components/formeditor/dragtool.h
+++ b/src/plugins/qmldesigner/components/formeditor/dragtool.h
@@ -86,6 +86,7 @@ public:
void itemsAboutToRemoved(const QList<FormEditorItem*> &itemList);
void selectedItemsChanged(const QList<FormEditorItem*> &itemList);
+ void instancesParentChanged(const QList<FormEditorItem *> &itemList);
void updateMoveManipulator();
diff --git a/src/plugins/qmldesigner/components/formeditor/formeditorview.cpp b/src/plugins/qmldesigner/components/formeditor/formeditorview.cpp
index e0d0b58297..3cc5865564 100644
--- a/src/plugins/qmldesigner/components/formeditor/formeditorview.cpp
+++ b/src/plugins/qmldesigner/components/formeditor/formeditorview.cpp
@@ -56,6 +56,7 @@
#include <zoomaction.h>
#include <nodeabstractproperty.h>
#include <nodelistproperty.h>
+#include <commondefines.h>
namespace QmlDesigner {
@@ -502,6 +503,7 @@ void FormEditorView::instancesChildrenChanged(const QVector<ModelNode> &nodeList
}
m_currentTool->formEditorItemsChanged(itemNodeList);
+ m_currentTool->instancesParentChanged(itemNodeList);
}
void FormEditorView::rewriterBeginTransaction()
diff --git a/src/plugins/qmldesigner/components/formeditor/itemcreatortool.cpp b/src/plugins/qmldesigner/components/formeditor/itemcreatortool.cpp
index 4d6c3a769f..398dbe1f4d 100644
--- a/src/plugins/qmldesigner/components/formeditor/itemcreatortool.cpp
+++ b/src/plugins/qmldesigner/components/formeditor/itemcreatortool.cpp
@@ -145,6 +145,10 @@ void ItemCreatorTool::instancesCompleted(const QList<FormEditorItem*> &/*itemLis
{
}
+void ItemCreatorTool::instancesParentChanged(const QList<FormEditorItem *> &/*itemList*/)
+{
+}
+
void ItemCreatorTool::setItemString(const QString &itemString)
{
m_itemString = itemString;
diff --git a/src/plugins/qmldesigner/components/formeditor/itemcreatortool.h b/src/plugins/qmldesigner/components/formeditor/itemcreatortool.h
index 6c41176020..f7fab80b02 100644
--- a/src/plugins/qmldesigner/components/formeditor/itemcreatortool.h
+++ b/src/plugins/qmldesigner/components/formeditor/itemcreatortool.h
@@ -71,6 +71,7 @@ public:
void formEditorItemsChanged(const QList<FormEditorItem*> &itemList);
void instancesCompleted(const QList<FormEditorItem*> &itemList);
+ void instancesParentChanged(const QList<FormEditorItem *> &itemList);
void setItemString(const QString &itemString);
diff --git a/src/plugins/qmldesigner/components/formeditor/movemanipulator.cpp b/src/plugins/qmldesigner/components/formeditor/movemanipulator.cpp
index 14bcc54256..c673e74130 100644
--- a/src/plugins/qmldesigner/components/formeditor/movemanipulator.cpp
+++ b/src/plugins/qmldesigner/components/formeditor/movemanipulator.cpp
@@ -88,6 +88,24 @@ void MoveManipulator::setItems(const QList<FormEditorItem*> &itemList)
}
}
+void MoveManipulator::synchronizeInstanceParent(const QList<FormEditorItem*> &itemList)
+{
+ if (m_view->model()) {
+ foreach (FormEditorItem *item, itemList) {
+ if (m_itemList.contains(item)) {
+ QmlItemNode parentItemNode = QmlItemNode(item->qmlItemNode().instanceParent());
+ if (parentItemNode.isValid()) {
+ m_snapper.setContainerFormEditorItem(m_view->scene()->itemForQmlItemNode(parentItemNode));
+ m_snapper.setTransformtionSpaceFormEditorItem(m_snapper.containerFormEditorItem());
+ m_snapper.updateSnappingLines(m_itemList);
+ updateHashes();
+ break;
+ }
+ }
+ }
+ }
+}
+
void MoveManipulator::updateHashes()
{
// foreach (FormEditorItem* item, m_itemList)
@@ -344,13 +362,6 @@ void MoveManipulator::reparentTo(FormEditorItem *newParent)
item->qmlItemNode().setParentProperty(parent.nodeAbstractProperty("data"));
}
}
-
- if (m_view->model()) {
- m_snapper.setContainerFormEditorItem(newParent);
- m_snapper.setTransformtionSpaceFormEditorItem(m_snapper.containerFormEditorItem());
- m_snapper.updateSnappingLines(m_itemList);
- updateHashes();
- }
}
diff --git a/src/plugins/qmldesigner/components/formeditor/movemanipulator.h b/src/plugins/qmldesigner/components/formeditor/movemanipulator.h
index d24cb50716..a755e62613 100644
--- a/src/plugins/qmldesigner/components/formeditor/movemanipulator.h
+++ b/src/plugins/qmldesigner/components/formeditor/movemanipulator.h
@@ -69,6 +69,7 @@ public:
~MoveManipulator();
void setItems(const QList<FormEditorItem*> &itemList);
void setItem(FormEditorItem* item);
+ void synchronizeInstanceParent(const QList<FormEditorItem*> &itemList);
void begin(const QPointF& beginPoint);
void update(const QPointF& updatePoint, Snapping useSnapping, State stateToBeManipulated = UseActualState);
diff --git a/src/plugins/qmldesigner/components/formeditor/movetool.cpp b/src/plugins/qmldesigner/components/formeditor/movetool.cpp
index 5b8226fff4..0b68938bc6 100644
--- a/src/plugins/qmldesigner/components/formeditor/movetool.cpp
+++ b/src/plugins/qmldesigner/components/formeditor/movetool.cpp
@@ -256,6 +256,11 @@ void MoveTool::instancesCompleted(const QList<FormEditorItem*> & /*itemList*/)
{
}
+void MoveTool::instancesParentChanged(const QList<FormEditorItem *> &itemList)
+{
+ m_moveManipulator.synchronizeInstanceParent(itemList);
+}
+
bool MoveTool::haveSameParent(const QList<FormEditorItem*> &itemList)
{
if (itemList.isEmpty())
diff --git a/src/plugins/qmldesigner/components/formeditor/movetool.h b/src/plugins/qmldesigner/components/formeditor/movetool.h
index be9227f714..9225e09890 100644
--- a/src/plugins/qmldesigner/components/formeditor/movetool.h
+++ b/src/plugins/qmldesigner/components/formeditor/movetool.h
@@ -67,7 +67,8 @@ public:
void selectedItemsChanged(const QList<FormEditorItem*> &itemList);
- void instancesCompleted(const QList<FormEditorItem*> &/*itemList*/);
+ void instancesCompleted(const QList<FormEditorItem*> &itemList);
+ void instancesParentChanged(const QList<FormEditorItem *> &itemList);
void updateMoveManipulator();
diff --git a/src/plugins/qmldesigner/components/formeditor/resizetool.cpp b/src/plugins/qmldesigner/components/formeditor/resizetool.cpp
index 3063daff4f..fca319def1 100644
--- a/src/plugins/qmldesigner/components/formeditor/resizetool.cpp
+++ b/src/plugins/qmldesigner/components/formeditor/resizetool.cpp
@@ -196,8 +196,14 @@ void ResizeTool::formEditorItemsChanged(const QList<FormEditorItem*> &itemList)
m_resizeIndicator.updateItems(itemList);
}
- void ResizeTool::instancesCompleted(const QList<FormEditorItem*> &/*itemList*/)
- {
- }
+void ResizeTool::instancesCompleted(const QList<FormEditorItem*> &/*itemList*/)
+{
+}
+
+
+void ResizeTool::instancesParentChanged(const QList<FormEditorItem *> &/*itemList*/)
+{
+
+}
}
diff --git a/src/plugins/qmldesigner/components/formeditor/resizetool.h b/src/plugins/qmldesigner/components/formeditor/resizetool.h
index d7ffa7a050..68c935b676 100644
--- a/src/plugins/qmldesigner/components/formeditor/resizetool.h
+++ b/src/plugins/qmldesigner/components/formeditor/resizetool.h
@@ -67,9 +67,11 @@ public:
void clear();
void formEditorItemsChanged(const QList<FormEditorItem*> &itemList);
+ void instancesParentChanged(const QList<FormEditorItem *> &itemList);
void instancesCompleted(const QList<FormEditorItem*> &itemList);
+
private:
SelectionIndicator m_selectionIndicator;
ResizeIndicator m_resizeIndicator;
diff --git a/src/plugins/qmldesigner/components/formeditor/selectiontool.cpp b/src/plugins/qmldesigner/components/formeditor/selectiontool.cpp
index 110c751293..b79bf484ab 100644
--- a/src/plugins/qmldesigner/components/formeditor/selectiontool.cpp
+++ b/src/plugins/qmldesigner/components/formeditor/selectiontool.cpp
@@ -275,6 +275,11 @@ void SelectionTool::instancesCompleted(const QList<FormEditorItem*> &/*itemList*
{
}
+void SelectionTool::instancesParentChanged(const QList<FormEditorItem *> &/*itemList*/)
+{
+
+}
+
void SelectionTool::selectUnderPoint(QGraphicsSceneMouseEvent *event)
{
m_singleSelectionManipulator.begin(event->scenePos());
diff --git a/src/plugins/qmldesigner/components/formeditor/selectiontool.h b/src/plugins/qmldesigner/components/formeditor/selectiontool.h
index d9b1edcc37..a08c38dcae 100644
--- a/src/plugins/qmldesigner/components/formeditor/selectiontool.h
+++ b/src/plugins/qmldesigner/components/formeditor/selectiontool.h
@@ -80,6 +80,8 @@ public:
void formEditorItemsChanged(const QList<FormEditorItem*> &itemList);
void instancesCompleted(const QList<FormEditorItem*> &itemList);
+ void instancesParentChanged(const QList<FormEditorItem *> &itemList);
+
void selectUnderPoint(QGraphicsSceneMouseEvent *event);
diff --git a/src/plugins/qmldesigner/designercore/include/nodeinstanceview.h b/src/plugins/qmldesigner/designercore/include/nodeinstanceview.h
index 1cc469b411..5d3ef307d4 100644
--- a/src/plugins/qmldesigner/designercore/include/nodeinstanceview.h
+++ b/src/plugins/qmldesigner/designercore/include/nodeinstanceview.h
@@ -69,6 +69,7 @@ class ChangeIdsCommand;
class RemoveInstancesCommand;
class RemovePropertiesCommand;
class CompleteComponentCommand;
+class InformationContainer;
class CORESHARED_EXPORT NodeInstanceView : public AbstractView, public NodeInstanceClientInterface
{
@@ -161,6 +162,8 @@ private: // functions
void clearStateInstance();
NodeInstanceServerInterface *nodeInstanceServer() const;
+ QMultiHash<ModelNode, InformationName> informationChanged(const QVector<InformationContainer> &containerVector);
+
CreateSceneCommand createCreateSceneCommand();
ClearSceneCommand createClearSceneCommand() const;
diff --git a/src/plugins/qmldesigner/designercore/instances/nodeinstanceview.cpp b/src/plugins/qmldesigner/designercore/instances/nodeinstanceview.cpp
index 65c5a1bfba..eca58fa321 100644
--- a/src/plugins/qmldesigner/designercore/instances/nodeinstanceview.cpp
+++ b/src/plugins/qmldesigner/designercore/instances/nodeinstanceview.cpp
@@ -1058,14 +1058,11 @@ void NodeInstanceView::pixmapChanged(const PixmapChangedCommand &command)
emitInstancesRenderImageChanged(renderImageChangeSet.toList().toVector());
}
-void NodeInstanceView::informationChanged(const InformationChangedCommand &command)
+QMultiHash<ModelNode, InformationName> NodeInstanceView::informationChanged(const QVector<InformationContainer> &containerVector)
{
- if (!model())
- return;
-
QMultiHash<ModelNode, InformationName> informationChangeHash;
- foreach(const InformationContainer &container, command.informations()) {
+ foreach (const InformationContainer &container, containerVector) {
if (hasInstanceForId(container.instanceId())) {
NodeInstance instance = instanceForId(container.instanceId());
if (instance.isValid()) {
@@ -1076,6 +1073,16 @@ void NodeInstanceView::informationChanged(const InformationChangedCommand &comma
}
}
+ return informationChangeHash;
+}
+
+void NodeInstanceView::informationChanged(const InformationChangedCommand &command)
+{
+ if (!model())
+ return;
+
+ QMultiHash<ModelNode, InformationName> informationChangeHash = informationChanged(command.informations());
+
if (!informationChangeHash.isEmpty())
emitInstanceInformationsChange(informationChangeHash);
}
@@ -1138,6 +1145,7 @@ void NodeInstanceView::childrenChanged(const ChildrenChangedCommand &command)
if (!model())
return;
+
QVector<ModelNode> childNodeVector;
foreach(qint32 instanceId, command.childrenInstances()) {
@@ -1148,6 +1156,11 @@ void NodeInstanceView::childrenChanged(const ChildrenChangedCommand &command)
}
}
+ QMultiHash<ModelNode, InformationName> informationChangeHash = informationChanged(command.informations());
+
+ if (!informationChangeHash.isEmpty())
+ emitInstanceInformationsChange(informationChangeHash);
+
if (!childNodeVector.isEmpty())
emitInstancesChildrenChanged(childNodeVector);
}