From a941c5bfc2b824d694d8312cba6d58a55cc8ba8a Mon Sep 17 00:00:00 2001 From: vsv Date: Fri, 28 Nov 2014 15:13:37 +0300 Subject: [PATCH] Improvement of shape selector --- .../ModuleBase_WidgetShapeSelector.cpp | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/src/ModuleBase/ModuleBase_WidgetShapeSelector.cpp b/src/ModuleBase/ModuleBase_WidgetShapeSelector.cpp index 12cb98980..74294d9a4 100644 --- a/src/ModuleBase/ModuleBase_WidgetShapeSelector.cpp +++ b/src/ModuleBase/ModuleBase_WidgetShapeSelector.cpp @@ -135,17 +135,21 @@ bool ModuleBase_WidgetShapeSelector::storeValue() const if (aBody) { AttributePtr aAttr = aData->attribute(attributeID()); + // We have to check several attributes types AttributeSelectionPtr aSelectAttr = std::dynamic_pointer_cast(aAttr); - if (aSelectAttr) + if (aSelectAttr) { aSelectAttr->setValue(aBody, myShape); - else { + updateObject(myFeature); + return true; + } else { AttributeRefAttrPtr aRefAttr = aData->refattr(attributeID()); - if (aRefAttr) + if (aRefAttr) { aRefAttr->setObject(mySelectedObject); + updateObject(myFeature); + return true; + } } - updateObject(myFeature); - return true; } } else { AttributeReferencePtr aRef = aData->reference(attributeID()); @@ -181,6 +185,11 @@ bool ModuleBase_WidgetShapeSelector::restoreValue() if (aSelect) { mySelectedObject = aSelect->context(); myShape = aSelect->value(); + } else { + AttributeRefAttrPtr aRefAttr = aData->refattr(attributeID()); + if (aRefAttr) { + mySelectedObject = aRefAttr->object(); + } } } else { AttributeReferencePtr aRef = aData->reference(attributeID()); -- 2.39.2