summaryrefslogtreecommitdiffstats
path: root/src/Authoring/Client/Code/Core/Doc/DocumentEditor.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/Authoring/Client/Code/Core/Doc/DocumentEditor.cpp')
-rw-r--r--src/Authoring/Client/Code/Core/Doc/DocumentEditor.cpp23
1 files changed, 15 insertions, 8 deletions
diff --git a/src/Authoring/Client/Code/Core/Doc/DocumentEditor.cpp b/src/Authoring/Client/Code/Core/Doc/DocumentEditor.cpp
index e4c9c6ef..9663f920 100644
--- a/src/Authoring/Client/Code/Core/Doc/DocumentEditor.cpp
+++ b/src/Authoring/Client/Code/Core/Doc/DocumentEditor.cpp
@@ -2372,6 +2372,14 @@ public:
TInstanceHandle handle;
};
+ void setInstanceValueIfChanged(TInstanceHandle instance, TPropertyHandle prop, SValue value)
+ {
+ SValue oldValue;
+ m_PropertySystem.GetInstancePropertyValue(instance, prop, oldValue);
+ if (oldValue != value)
+ SetInstancePropertyValue(instance, prop, value);
+ }
+
QVector<ChildInstance> setPropertyValues(TInstanceHandle instance,
const QMap<QString, QString> &values)
{
@@ -2396,8 +2404,7 @@ public:
switch (type) {
case DataModelDataType::Long4:
{
- SetInstancePropertyValue(instance, prop,
- std::make_shared<CDataStr>(propString));
+ setInstanceValueIfChanged(instance, prop, std::make_shared<CDataStr>(propString));
SValue value;
m_PropertySystem.GetInstancePropertyValue(instance, prop, value);
if (!value.empty()) {
@@ -2412,7 +2419,7 @@ public:
}
case DataModelDataType::Float:
{
- SetInstancePropertyValue(instance, prop, i.value().toFloat());
+ setInstanceValueIfChanged(instance, prop, i.value().toFloat());
break;
}
case DataModelDataType::Float2:
@@ -2420,7 +2427,7 @@ public:
QStringList floats = i.value().split(QStringLiteral(" "));
if (floats.length() == 2) {
SFloat2 value(floats[0].toFloat(), floats[1].toFloat());
- SetInstancePropertyValue(instance, prop, value);
+ setInstanceValueIfChanged(instance, prop, value);
}
break;
}
@@ -2429,21 +2436,21 @@ public:
QStringList floats = i.value().split(QStringLiteral(" "));
if (floats.length() == 3) {
SFloat3 value(floats[0].toFloat(), floats[1].toFloat(), floats[2].toFloat());
- SetInstancePropertyValue(instance, prop, value);
+ setInstanceValueIfChanged(instance, prop, value);
}
break;
}
case DataModelDataType::Bool:
{
if (propString == "True")
- SetInstancePropertyValue(instance, prop, true);
+ setInstanceValueIfChanged(instance, prop, true);
else if (propString == "False")
- SetInstancePropertyValue(instance, prop, false);
+ setInstanceValueIfChanged(instance, prop, false);
break;
}
case DataModelDataType::String:
{
- SetInstancePropertyValue(instance, prop, std::make_shared<CDataStr>(propString));
+ setInstanceValueIfChanged(instance, prop, std::make_shared<CDataStr>(propString));
break;
}
default: