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