From c6a7091c8aca4a2c01be21b08b525a4e97c245d7 Mon Sep 17 00:00:00 2001
From: Marco Bubke <marco.bubke@nokia.com>
Date: Tue, 19 Jul 2011 20:18:29 +0200
Subject: [PATCH] QmlDesigner.NodeInstances: Fix line feed handling

Task-number: QTCREATORBUG-4161

Change-Id: I61d765bedffde4d1f15e763d92b771f22dbcd4a2
Reviewed-on: http://codereview.qt.nokia.com/1849
Reviewed-by: Qt Sanity Bot <qt_sanity_bot@ovi.com>
Reviewed-by: Thomas Hartmann <Thomas.Hartmann@nokia.com>
---
 .../qml/qmlpuppet/instances/objectnodeinstance.cpp | 14 +++++++++++++-
 .../qml/qmlpuppet/instances/objectnodeinstance.h   |  1 +
 2 files changed, 14 insertions(+), 1 deletion(-)

diff --git a/share/qtcreator/qml/qmlpuppet/instances/objectnodeinstance.cpp b/share/qtcreator/qml/qmlpuppet/instances/objectnodeinstance.cpp
index cbb58d1e4e5..a0ffd18e9ee 100644
--- a/share/qtcreator/qml/qmlpuppet/instances/objectnodeinstance.cpp
+++ b/share/qtcreator/qml/qmlpuppet/instances/objectnodeinstance.cpp
@@ -374,6 +374,18 @@ void ObjectNodeInstance::reparent(const ObjectNodeInstance::Pointer &oldParentIn
         addToNewProperty(object(), newParentInstance->object(), newParentProperty);
     }
 }
+QVariant ObjectNodeInstance::convertSpecialCharacter(const QVariant& value) const
+{
+    QVariant specialCharacterConvertedValue = value;
+    if (value.type() == QVariant::String) {
+        QString string = value.toString();
+        string.replace(QLatin1String("\\n"), QLatin1String("\n"));
+        string.replace(QLatin1String("\\t"), QLatin1String("\t"));
+        specialCharacterConvertedValue = string;
+    }
+
+    return specialCharacterConvertedValue;
+}
 
 void ObjectNodeInstance::setPropertyVariant(const QString &name, const QVariant &value)
 {
@@ -394,7 +406,7 @@ void ObjectNodeInstance::setPropertyVariant(const QString &name, const QVariant
         QDeclarativePropertyPrivate::setBinding(property, 0, QDeclarativePropertyPrivate::BypassInterceptor | QDeclarativePropertyPrivate::DontRemoveBinding);
     }
 
-    bool isWritten = property.write(value);
+    bool isWritten = property.write(convertSpecialCharacter(value));
 
     if (!isWritten)
         qDebug() << "ObjectNodeInstance.setPropertyVariant: Cannot be written: " << object() << name << value;
diff --git a/share/qtcreator/qml/qmlpuppet/instances/objectnodeinstance.h b/share/qtcreator/qml/qmlpuppet/instances/objectnodeinstance.h
index 68198df1908..b0f19edc7bc 100644
--- a/share/qtcreator/qml/qmlpuppet/instances/objectnodeinstance.h
+++ b/share/qtcreator/qml/qmlpuppet/instances/objectnodeinstance.h
@@ -191,6 +191,7 @@ protected:
     void removeFromOldProperty(QObject *object, QObject *oldParent, const QString &oldParentProperty);
     void addToNewProperty(QObject *object, QObject *newParent, const QString &newParentProperty);
     void deleteObjectsInList(const QDeclarativeProperty &metaProperty);
+    QVariant convertSpecialCharacter(const QVariant& value) const;
 
 private:
     QHash<QString, QVariant> m_resetValueHash;
-- 
GitLab