diff options
author | Erik Verbruggen <erik.verbruggen@nokia.com> | 2010-05-26 12:41:24 +0200 |
---|---|---|
committer | Erik Verbruggen <erik.verbruggen@nokia.com> | 2010-05-26 12:42:53 +0200 |
commit | 77bd9e299629056edf6807a293619e63933dc958 (patch) | |
tree | 8b8a282f49e258243834c8e0b1abdb7dc00a8197 /src/plugins/qmldesigner/designercore/model/modeltotextmerger.cpp | |
parent | 79cbc07b29eab23dc148ae2ba0173dd26296ed87 (diff) | |
download | qt-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.cpp | 34 |
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; |