QmlDesigner: Fix quick position update for states

It is ugly but the workaround is ugly anyway.

Change-Id: Idcd55e19e9c97b0bfce0863cfcbe9f7ca18bf5bf
Reviewed-by: Tim Jenssen <tim.jenssen@digia.com>
This commit is contained in:
Marco Bubke
2014-06-24 19:38:45 +02:00
parent 6c99a48aaf
commit 6f0ea53f8a

View File

@@ -43,6 +43,8 @@
#include "bindingproperty.h" #include "bindingproperty.h"
#include "nodeabstractproperty.h" #include "nodeabstractproperty.h"
#include "nodelistproperty.h" #include "nodelistproperty.h"
#include "nodeproperty.h"
#include "qmlchangeset.h"
#include "createscenecommand.h" #include "createscenecommand.h"
#include "createinstancescommand.h" #include "createinstancescommand.h"
@@ -674,19 +676,48 @@ NodeInstance NodeInstanceView::activeStateInstance() const
return m_activeStateInstance; return m_activeStateInstance;
} }
void setXValue(NodeInstance &instance, const VariantProperty &variantProperty, QMultiHash<ModelNode, InformationName> &informationChangeHash)
{
instance.setX(variantProperty.value().toDouble());
informationChangeHash.insert(variantProperty.parentModelNode(), Transform);
}
void setYValue(NodeInstance &instance, const VariantProperty &variantProperty, QMultiHash<ModelNode, InformationName> &informationChangeHash)
{
instance.setY(variantProperty.value().toDouble());
informationChangeHash.insert(variantProperty.parentModelNode(), Transform);
}
void NodeInstanceView::updatePosition(const QList<VariantProperty> &propertyList) void NodeInstanceView::updatePosition(const QList<VariantProperty> &propertyList)
{ {
QMultiHash<ModelNode, InformationName> informationChangeHash; QMultiHash<ModelNode, InformationName> informationChangeHash;
foreach (const VariantProperty &variantProperty, propertyList) { foreach (const VariantProperty &variantProperty, propertyList) {
if (variantProperty.name() == "x") { if (variantProperty.name() == "x") {
NodeInstance instance = instanceForModelNode(variantProperty.parentModelNode()); const ModelNode modelNode = variantProperty.parentModelNode();
instance.setX(variantProperty.value().toDouble()); if (QmlPropertyChanges::isValidQmlPropertyChanges(modelNode)) {
informationChangeHash.insert(variantProperty.parentModelNode(), Transform); ModelNode targetModelNode = QmlPropertyChanges(modelNode).target();
if (targetModelNode.isValid()) {
NodeInstance instance = instanceForModelNode(targetModelNode);
setXValue(instance, variantProperty, informationChangeHash);
}
} else {
NodeInstance instance = instanceForModelNode(modelNode);
setXValue(instance, variantProperty, informationChangeHash);
}
} else if (variantProperty.name() == "y") { } else if (variantProperty.name() == "y") {
NodeInstance instance = instanceForModelNode(variantProperty.parentModelNode()); const ModelNode modelNode = variantProperty.parentModelNode();
instance.setY(variantProperty.value().toDouble()); if (QmlPropertyChanges::isValidQmlPropertyChanges(modelNode)) {
informationChangeHash.insert(variantProperty.parentModelNode(), Transform); ModelNode targetModelNode = QmlPropertyChanges(modelNode).target();
if (targetModelNode.isValid()) {
NodeInstance instance = instanceForModelNode(targetModelNode);
setYValue(instance, variantProperty, informationChangeHash);
}
} else {
NodeInstance instance = instanceForModelNode(modelNode);
setYValue(instance, variantProperty, informationChangeHash);
}
} }
} }