diff options
author | Thomas Hartmann <Thomas.Hartmann@nokia.com> | 2011-06-30 17:30:17 +0200 |
---|---|---|
committer | Thomas Hartmann <Thomas.Hartmann@nokia.com> | 2011-06-30 17:36:09 +0200 |
commit | 3cfa37624395d23d48fddb7e91e83168fe1dfc3f (patch) | |
tree | de29095349cbc510f79a5470ea89450af77ea6c7 /share/qtcreator/qml | |
parent | b18ef1ffb240506368459845fe1b9e932a49b44c (diff) | |
download | qt-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>
Diffstat (limited to 'share/qtcreator/qml')
4 files changed, 39 insertions, 22 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()) { |