From: vsv Date: Wed, 9 Oct 2019 09:06:30 +0000 (+0300) Subject: Fix selection of non-visible features. X-Git-Tag: V9_4_0a2^0 X-Git-Url: http://git.salome-platform.org/gitweb/?a=commitdiff_plain;h=2e0f664e66dc2b46796df2953f52871b10799173;p=modules%2Fshaper.git Fix selection of non-visible features. --- diff --git a/src/ModuleBase/ModuleBase_ISelection.cpp b/src/ModuleBase/ModuleBase_ISelection.cpp index 73999c601..635991721 100644 --- a/src/ModuleBase/ModuleBase_ISelection.cpp +++ b/src/ModuleBase/ModuleBase_ISelection.cpp @@ -20,6 +20,7 @@ #include "ModuleBase_ISelection.h" #include "ModuleBase_ViewerPrs.h" +#include "ModelAPI_Feature.h" #include #include @@ -53,8 +54,16 @@ ResultPtr ModuleBase_ISelection::getResult(const ModuleBase_ViewerPrsPtr& thePrs { ResultPtr aResult; - if (thePrs->object().get()) - aResult = std::dynamic_pointer_cast(thePrs->object()); + if (thePrs->object().get()) { + ObjectPtr aObject = thePrs->object(); + aResult = std::dynamic_pointer_cast(aObject); + if (!aResult.get()) { + FeaturePtr aFeature = std::dynamic_pointer_cast(aObject); + if (aFeature.get()) { + aResult = aFeature->firstResult(); + } + } + } else if (!thePrs->owner().IsNull()) { ObjectPtr anObject = getSelectableObject(thePrs->owner()); aResult = std::dynamic_pointer_cast(anObject); diff --git a/src/ModuleBase/ModuleBase_WidgetValidated.cpp b/src/ModuleBase/ModuleBase_WidgetValidated.cpp index a11c8c201..bd9cdbd76 100644 --- a/src/ModuleBase/ModuleBase_WidgetValidated.cpp +++ b/src/ModuleBase/ModuleBase_WidgetValidated.cpp @@ -107,7 +107,7 @@ bool ModuleBase_WidgetValidated::isValidInFilters(const ModuleBase_ViewerPrsPtr& // if an owner is null, the selection happens in the Object browser. // creates a selection owner on the base of object shape and the object AIS object - if ((aOwnersList.Size() > 0) && thePrs->object().get()) { + if ((aOwnersList.Size() == 0) && thePrs->object().get()) { ResultPtr aResult = myWorkshop->selection()->getResult(thePrs); GeomShapePtr aShape = aResult.get() ? aResult->shape() : GeomShapePtr(); // some results have no shape, e.g. the parameter one. So, they should not be validated