summaryrefslogtreecommitdiff
path: root/src/plugins/qmldesigner/designercore/model/modeltotextmerger.cpp
diff options
context:
space:
mode:
authorErik Verbruggen <erik.verbruggen@nokia.com>2010-05-26 12:41:24 +0200
committerErik Verbruggen <erik.verbruggen@nokia.com>2010-05-26 12:42:53 +0200
commit77bd9e299629056edf6807a293619e63933dc958 (patch)
tree8b8a282f49e258243834c8e0b1abdb7dc00a8197 /src/plugins/qmldesigner/designercore/model/modeltotextmerger.cpp
parent79cbc07b29eab23dc148ae2ba0173dd26296ed87 (diff)
downloadqt-creator-77bd9e299629056edf6807a293619e63933dc958.tar.gz
Fixed compression bugs in text refactoring.
Task-number: BAUHAUS-729, BAUHAUS-731
Diffstat (limited to 'src/plugins/qmldesigner/designercore/model/modeltotextmerger.cpp')
-rw-r--r--src/plugins/qmldesigner/designercore/model/modeltotextmerger.cpp34
1 files changed, 25 insertions, 9 deletions
diff --git a/src/plugins/qmldesigner/designercore/model/modeltotextmerger.cpp b/src/plugins/qmldesigner/designercore/model/modeltotextmerger.cpp
index 8592282692..2afdaec7d1 100644
--- a/src/plugins/qmldesigner/designercore/model/modeltotextmerger.cpp
+++ b/src/plugins/qmldesigner/designercore/model/modeltotextmerger.cpp
@@ -101,7 +101,7 @@ void ModelToTextMerger::propertiesChanged(const QList<AbstractProperty>& propert
schedule(new AddPropertyRewriteAction(property,
propertyTextValue,
- propertyType(property),
+ propertyType(property, propertyTextValue),
containedModelNode));
break;
@@ -111,7 +111,7 @@ void ModelToTextMerger::propertiesChanged(const QList<AbstractProperty>& propert
schedule(new ChangePropertyRewriteAction(property,
propertyTextValue,
- propertyType(property),
+ propertyType(property, propertyTextValue),
containedModelNode));
break;
@@ -149,7 +149,10 @@ void ModelToTextMerger::removeImport(const Import &import)
void ModelToTextMerger::nodeReparented(const ModelNode &node, const NodeAbstractProperty &newPropertyParent, const NodeAbstractProperty &oldPropertyParent, AbstractView::PropertyChangeFlags propertyChange)
{
if (isInHierarchy(oldPropertyParent) && isInHierarchy(newPropertyParent)) { // the node is moved
- schedule(new ReparentNodeRewriteAction(node, oldPropertyParent.parentModelNode(), newPropertyParent, propertyType(newPropertyParent)));
+ schedule(new ReparentNodeRewriteAction(node,
+ oldPropertyParent.parentModelNode(),
+ newPropertyParent,
+ propertyType(newPropertyParent)));
} else if (isInHierarchy(oldPropertyParent) && !isInHierarchy(newPropertyParent)) { // the node is removed from hierarchy
if (oldPropertyParent.isNodeProperty()) {
// ignore, the subsequent remove property will take care of all
@@ -165,11 +168,17 @@ void ModelToTextMerger::nodeReparented(const ModelNode &node, const NodeAbstract
} else if (!isInHierarchy(oldPropertyParent) && isInHierarchy(newPropertyParent)) { // the node is inserted into to hierarchy
switch (propertyChange) {
case AbstractView::PropertiesAdded:
- schedule(new AddPropertyRewriteAction(newPropertyParent, QmlTextGenerator(getPropertyOrder())(node), propertyType(newPropertyParent), node));
+ schedule(new AddPropertyRewriteAction(newPropertyParent,
+ QmlTextGenerator(getPropertyOrder())(node),
+ propertyType(newPropertyParent),
+ node));
break;
case AbstractView::NoAdditionalChanges:
- schedule(new ChangePropertyRewriteAction(newPropertyParent, QmlTextGenerator(getPropertyOrder())(node), propertyType(newPropertyParent), node));
+ schedule(new ChangePropertyRewriteAction(newPropertyParent,
+ QmlTextGenerator(getPropertyOrder())(node),
+ propertyType(newPropertyParent),
+ node));
break;
case AbstractView::EmptyPropertiesRemoved:
@@ -307,11 +316,18 @@ void ModelToTextMerger::schedule(RewriteAction *action)
m_rewriteActions.append(action);
}
-QmlDesigner::QmlRefactoring::PropertyType ModelToTextMerger::propertyType(const AbstractProperty &property)
+QmlDesigner::QmlRefactoring::PropertyType ModelToTextMerger::propertyType(const AbstractProperty &property, const QString &textValue)
{
- if (property.isBindingProperty())
- return QmlDesigner::QmlRefactoring::ObjectBinding;
- else if (property.isNodeListProperty())
+ if (property.isBindingProperty()) {
+ QString val = textValue.trimmed();
+ if (val.isEmpty())
+ return QmlDesigner::QmlRefactoring::ObjectBinding;
+ const QChar lastChar = val.at(val.size() - 1);
+ if (lastChar == '}' || lastChar == ';')
+ return QmlDesigner::QmlRefactoring::ObjectBinding;
+ else
+ return QmlDesigner::QmlRefactoring::ScriptBinding;
+ } else if (property.isNodeListProperty())
return QmlDesigner::QmlRefactoring::ArrayBinding;
else if (property.isNodeProperty())
return QmlDesigner::QmlRefactoring::ObjectBinding;