From 9ca8171f20d022a1ad9cd5421b97dfa977157dd3 Mon Sep 17 00:00:00 2001 From: nds Date: Mon, 13 Apr 2015 14:19:34 +0300 Subject: [PATCH] Correction for extrusion. --- .../ModuleBase_WidgetMultiSelector.cpp | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/src/ModuleBase/ModuleBase_WidgetMultiSelector.cpp b/src/ModuleBase/ModuleBase_WidgetMultiSelector.cpp index d1b383dd2..4d3d50d2b 100644 --- a/src/ModuleBase/ModuleBase_WidgetMultiSelector.cpp +++ b/src/ModuleBase/ModuleBase_WidgetMultiSelector.cpp @@ -198,8 +198,15 @@ void ModuleBase_WidgetMultiSelector::restoreAttributeValue(bool/* theValid*/) //******************************************************************** bool ModuleBase_WidgetMultiSelector::setSelectionCustom(const ModuleBase_ViewerPrs& thePrs) { - ObjectPtr anObject = myWorkshop->selection()->getSelectableObject(thePrs.owner()); - ResultPtr aResult = std::dynamic_pointer_cast(anObject); + ResultPtr aResult; + if (!thePrs.owner().IsNull()) { + ObjectPtr anObject = myWorkshop->selection()->getSelectableObject(thePrs.owner()); + aResult = std::dynamic_pointer_cast(anObject); + } + else { + aResult = std::dynamic_pointer_cast(thePrs.object()); + } + if (myFeature) { // We can not select a result of our feature @@ -230,7 +237,11 @@ bool ModuleBase_WidgetMultiSelector::setSelectionCustom(const ModuleBase_ViewerP else { GeomShapePtr aShape = std::shared_ptr(new GeomAPI_Shape()); aShape->setImpl(new TopoDS_Shape(aTDSShape)); - aSelectionListAttr->append(aResult, aShape); + // We can not select a result of our feature + if (aShape->isEqual(aResult->shape())) + aSelectionListAttr->append(aResult, GeomShapePtr()); + else + aSelectionListAttr->append(aResult, aShape); } return true; } -- 2.39.2