]> SALOME platform Git repositories - modules/shaper.git/commitdiff
Salome HOME
Correction for extrusion.
authornds <natalia.donis@opencascade.com>
Mon, 13 Apr 2015 11:19:34 +0000 (14:19 +0300)
committernds <natalia.donis@opencascade.com>
Mon, 13 Apr 2015 11:19:34 +0000 (14:19 +0300)
src/ModuleBase/ModuleBase_WidgetMultiSelector.cpp

index d1b383dd2459ec13d09d989578a9dfd0a03c5460..4d3d50d2b8b1bbb80f7d18d8e94a189a1d858cd1 100644 (file)
@@ -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<ModelAPI_Result>(anObject);
+  ResultPtr aResult;
+  if (!thePrs.owner().IsNull()) {
+    ObjectPtr anObject = myWorkshop->selection()->getSelectableObject(thePrs.owner());
+    aResult = std::dynamic_pointer_cast<ModelAPI_Result>(anObject);
+  }
+  else {
+    aResult = std::dynamic_pointer_cast<ModelAPI_Result>(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<GeomAPI_Shape>(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;
 }