From 72ea71aacfab308f074afe891a5333ec88d17efc Mon Sep 17 00:00:00 2001 From: Erik Verbruggen <erik.verbruggen@nokia.com> Date: Fri, 5 Mar 2010 15:24:38 +0100 Subject: [PATCH] Fixed string escaping when writing QML properties. --- .../qmldesigner/core/model/qmltextgenerator.cpp | 15 ++++++++++++++- .../qmldesigner/core/model/qmltextgenerator.h | 2 ++ 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/src/plugins/qmldesigner/core/model/qmltextgenerator.cpp b/src/plugins/qmldesigner/core/model/qmltextgenerator.cpp index 023debed9f1..8602078e3f0 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 3103581af22..84b03bc1961 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; -- GitLab