From 87f91a1e60c69242540ccdaab56086688819b86a Mon Sep 17 00:00:00 2001 From: nds Date: Tue, 31 Mar 2015 17:26:51 +0300 Subject: [PATCH] Additional check for shape selector: it is not necessary check validators if the attribute could not be filled by the owner, some conditions should be realized in the validators. --- src/ModuleBase/ModuleBase_WidgetShapeSelector.cpp | 12 ++++++------ src/ModuleBase/ModuleBase_WidgetValidated.cpp | 7 ++++--- 2 files changed, 10 insertions(+), 9 deletions(-) diff --git a/src/ModuleBase/ModuleBase_WidgetShapeSelector.cpp b/src/ModuleBase/ModuleBase_WidgetShapeSelector.cpp index 1721da469..36bbd0314 100644 --- a/src/ModuleBase/ModuleBase_WidgetShapeSelector.cpp +++ b/src/ModuleBase/ModuleBase_WidgetShapeSelector.cpp @@ -409,16 +409,17 @@ bool ModuleBase_WidgetShapeSelector::setSelection(const Handle_SelectMgr_EntityO myWorkshop->selection()->fillPresentation(aPrs, theOwner); // It should be checked by corresponded validator ObjectPtr aObject = aPrs.object(); - /*ObjectPtr aCurrentObject = GeomValidators_Tools::getObject(myFeature->attribute(attributeID())); + ObjectPtr aCurrentObject = GeomValidators_Tools::getObject(myFeature->attribute(attributeID())); + /* if ((!aCurrentObject) && (!aObject)) return false;*/ // It should be checked by corresponded validator // Check that the selected object is result (others can not be accepted) - /*ResultPtr aRes = std::dynamic_pointer_cast(aObject); + ResultPtr aRes = std::dynamic_pointer_cast(aObject); if (!aRes) return false; - if (myFeature) { + /*if (myFeature) { // We can not select a result of our feature const std::list>& aResList = myFeature->results(); std::list >::const_iterator aIt; @@ -438,10 +439,9 @@ bool ModuleBase_WidgetShapeSelector::setSelection(const Handle_SelectMgr_EntityO // It should be checked by corresponded validator // Check that the result has a shape - GeomShapePtr aShape; - /*aShape = ModelAPI_Tools::shape(aRes); + GeomShapePtr aShape = ModelAPI_Tools::shape(aRes); if (!aShape) - return false;*/ + return false; // Get sub-shapes from local selection if (!aPrs.shape().IsNull()) { diff --git a/src/ModuleBase/ModuleBase_WidgetValidated.cpp b/src/ModuleBase/ModuleBase_WidgetValidated.cpp index 11e3851d8..445190ae5 100644 --- a/src/ModuleBase/ModuleBase_WidgetValidated.cpp +++ b/src/ModuleBase/ModuleBase_WidgetValidated.cpp @@ -57,10 +57,11 @@ bool ModuleBase_WidgetValidated::isValid(const Handle_SelectMgr_EntityOwner& the storeAttributeValue(); // saves the owner value to the widget attribute - setSelection(theOwner); + bool aValid = setSelection(theOwner); - // checks the attribute validity - bool aValid = isValidAttribute(); + if (aValid) + // checks the attribute validity + aValid = isValidAttribute(); // restores the current values of the widget attribute restoreAttributeValue(aValid); -- 2.39.2