forked from qt-creator/qt-creator
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:
@@ -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);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user