From bae07b16f6076cee346d7ecad7efe6f2a8e5e969 Mon Sep 17 00:00:00 2001 From: dogmaphobic Date: Mon, 9 Mar 2015 16:06:34 -0400 Subject: [PATCH] Type checking in Fact::setValue() FactTextField, when setting the value from its "text" field, was converting the value to string. This was causing (QML JavaScript) code that uses the value for computation to stop working once the user changed the value. --- src/FactSystem/Fact.cc | 22 +++++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/src/FactSystem/Fact.cc b/src/FactSystem/Fact.cc index 860fd1c5e..bed0ddf21 100644 --- a/src/FactSystem/Fact.cc +++ b/src/FactSystem/Fact.cc @@ -39,7 +39,27 @@ Fact::Fact(QString name, FactMetaData::ValueType_t type, QObject* parent) : void Fact::setValue(const QVariant& value) { - _value = value; + switch (type()) { + case FactMetaData::valueTypeInt8: + case FactMetaData::valueTypeInt16: + case FactMetaData::valueTypeInt32: + _value.setValue(QVariant(value.toInt())); + break; + + case FactMetaData::valueTypeUint8: + case FactMetaData::valueTypeUint16: + case FactMetaData::valueTypeUint32: + _value.setValue(value.toUInt()); + break; + + case FactMetaData::valueTypeFloat: + _value.setValue(value.toFloat()); + break; + + case FactMetaData::valueTypeDouble: + _value.setValue(value.toDouble()); + break; + } emit valueChanged(_value); emit _containerValueChanged(_value); } -- 2.22.0