From 1d3e8c510a5fe1d997f8c405de71cc5cf896306f Mon Sep 17 00:00:00 2001 From: Thomas Hartmann <Thomas.Hartmann@nokia.com> Date: Mon, 12 Apr 2010 12:26:04 +0200 Subject: [PATCH] QmlDesigner.rewriter: removes escaping from strings while reading in See Bauhaus 241 Reviewed-by: Erik Verbruggen --- .../core/model/texttomodelmerger.cpp | 23 ++++++++++++++++--- 1 file changed, 20 insertions(+), 3 deletions(-) diff --git a/src/plugins/qmldesigner/core/model/texttomodelmerger.cpp b/src/plugins/qmldesigner/core/model/texttomodelmerger.cpp index 92148dc0566..934a834a4d1 100644 --- a/src/plugins/qmldesigner/core/model/texttomodelmerger.cpp +++ b/src/plugins/qmldesigner/core/model/texttomodelmerger.cpp @@ -62,6 +62,20 @@ static inline QString stripQuotes(const QString &str) return str; } +static inline QString descape(const QString &value) +{ + QString result = value; + + result.replace(QLatin1String("\\\\"), QLatin1String("\\")); + result.replace(QLatin1String("\\\""), QLatin1String("\"")); + result.replace(QLatin1String("\\\t"), QLatin1String("\t")); + result.replace(QLatin1String("\\\r"), QLatin1String("\\\r")); + result.replace(QLatin1String("\\\n"), QLatin1String("\n")); + + return result; +} + + static inline bool isSignalPropertyName(const QString &signalName) { // see QmlCompiler::isSignalPropertyName @@ -143,7 +157,7 @@ static inline int propertyType(const QString &typeName) static inline QVariant convertDynamicPropertyValueToVariant(const QString &astValue, const QString &astType) { - const QString cleanedValue = stripQuotes(astValue.trimmed()); + const QString cleanedValue = descape(stripQuotes(astValue.trimmed())); if (astType.isEmpty()) return QString(); @@ -325,7 +339,7 @@ public: QVariant convertToVariant(const QString &astValue, UiQualifiedId *propertyId) { - const QString cleanedValue = stripQuotes(astValue.trimmed()); + const QString cleanedValue = descape(stripQuotes(astValue.trimmed())); const Interpreter::Value *property = 0; const Interpreter::ObjectValue *containingObject = 0; QString name; @@ -684,7 +698,7 @@ void TextToModelMerger::syncNode(ModelNode &modelNode, } else if (isLiteralValue(script)) { if (typeName == QLatin1String("Qt/PropertyChanges")) { AbstractProperty modelProperty = modelNode.property(astPropertyName); - const QVariant variantValue(stripQuotes(astValue)); + const QVariant variantValue(descape(stripQuotes(astValue))); syncVariantProperty(modelProperty, variantValue, QString(), differenceHandler); modelPropertyNames.remove(astPropertyName); } else { @@ -1052,12 +1066,15 @@ void ModelAmender::shouldBeNodeListProperty(AbstractProperty &modelProperty, *this); } + + void ModelAmender::variantValuesDiffer(VariantProperty &modelProperty, const QVariant &qmlVariantValue, const QString &dynamicType) { // qDebug()<< "ModelAmender::variantValuesDiffer for property"<<modelProperty.name() // << "in node" << modelProperty.parentModelNode().id() // << ", old value:" << modelProperty.value() // << "new value:" << qmlVariantValue; + if (dynamicType.isEmpty()) modelProperty.setValue(qmlVariantValue); else -- GitLab