summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorErik Verbruggen <erik.verbruggen@nokia.com>2010-03-05 15:24:38 +0100
committerErik Verbruggen <erik.verbruggen@nokia.com>2010-03-05 15:54:09 +0100
commit72ea71aacfab308f074afe891a5333ec88d17efc (patch)
treecbed2629e3c8a0a41e6733eb90033c33f51e1508
parentb59442e07298bc588509f7752ddb2a924bf96a88 (diff)
downloadqt-creator-72ea71aacfab308f074afe891a5333ec88d17efc.tar.gz
Fixed string escaping when writing QML properties.
-rw-r--r--src/plugins/qmldesigner/core/model/qmltextgenerator.cpp15
-rw-r--r--src/plugins/qmldesigner/core/model/qmltextgenerator.h2
2 files changed, 16 insertions, 1 deletions
diff --git a/src/plugins/qmldesigner/core/model/qmltextgenerator.cpp b/src/plugins/qmldesigner/core/model/qmltextgenerator.cpp
index 023debed9f..8602078e3f 100644
--- a/src/plugins/qmldesigner/core/model/qmltextgenerator.cpp
+++ b/src/plugins/qmldesigner/core/model/qmltextgenerator.cpp
@@ -97,7 +97,7 @@ QString QmlTextGenerator::toQml(const AbstractProperty &property, int indentDept
return stringValue;
default:
- return QString(QLatin1String("\"%1\"")).arg(stringValue);
+ return QString(QLatin1String("\"%1\"")).arg(escape(stringValue));
}
} else {
Q_ASSERT("Unknown property type");
@@ -176,3 +176,16 @@ QString QmlTextGenerator::propertyToQml(const AbstractProperty &property, int in
return result;
}
+
+QString QmlTextGenerator::escape(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;
+}
diff --git a/src/plugins/qmldesigner/core/model/qmltextgenerator.h b/src/plugins/qmldesigner/core/model/qmltextgenerator.h
index 3103581af2..84b03bc196 100644
--- a/src/plugins/qmldesigner/core/model/qmltextgenerator.h
+++ b/src/plugins/qmldesigner/core/model/qmltextgenerator.h
@@ -56,6 +56,8 @@ private:
QString propertiesToQml(const ModelNode &node, int indentDepth) const;
QString propertyToQml(const AbstractProperty &property, int indentDepth) const;
+ static QString escape(const QString &value);
+
private:
QStringList m_propertyOrder;
int m_indentDepth;