// if the double value can not be found by the default value, do nothing
if (isOk) {
ModuleBase_Tools::setSpinValue(mySpinBox, aDefValue);
- storeValueCustom();
+ storeValue();
aDone = true;
}
}
{
DataPtr aData = myFeature->data();
AttributeDoublePtr aReal = aData->real(attributeID());
- if (!mySpinBox->hasVariable()) {
- aReal->setValue(mySpinBox->value());
- aReal->setText("");
- } else {
+ if (mySpinBox->hasVariable()) {
// Here is a text of a real value or an expression.
std::string aText = mySpinBox->text().toStdString();
aReal->setText(aText);
+ } else {
+ // it is important to set the empty text value to the attribute before set the value
+ // because setValue tries to calculate the attribute value according to the
+ // attribute current text
+ aReal->setText("");
+ aReal->setValue(mySpinBox->value());
}
updateObject(myFeature);
return true;
}
-bool ModuleBase_WidgetDoubleValue::restoreValue()
+bool ModuleBase_WidgetDoubleValue::restoreValueCustom()
{
DataPtr aData = myFeature->data();
AttributeDoublePtr aRef = aData->real(attributeID());