Salome HOME
Merge branch 'Dev_1.1.0' of newgeom:newgeom into Dev_1.1.0
[modules/shaper.git] / src / ModuleBase / ModuleBase_WidgetShapeSelector.cpp
index fcd1e26c235a71ee76ff6f2951e93ec334f0eda0..a88479bc5e845eeb14b88d52b7efc8d7ed8e939f 100644 (file)
@@ -158,9 +158,9 @@ bool ModuleBase_WidgetShapeSelector::setObject(ObjectPtr theSelectedObject,
       }
     } else {
       AttributeSelectionPtr aSelectAttr = aData->selection(attributeID());
-      ResultPtr aBody = std::dynamic_pointer_cast<ModelAPI_Result>(theSelectedObject);
-      if (aSelectAttr && aBody && (theShape.get() != NULL)) {
-        aSelectAttr->setValue(aBody, theShape);
+      ResultPtr aResult = std::dynamic_pointer_cast<ModelAPI_Result>(theSelectedObject);
+      if (aSelectAttr) {
+        aSelectAttr->setValue(aResult, theShape);
         isChanged = true;
       }
     }
@@ -212,22 +212,26 @@ void ModuleBase_WidgetShapeSelector::onSelectionChanged()
   // In order to make reselection possible
   // TODO: check with MPV clearAttribute();
 
-  //QObjectPtrList aObjects = myWorkshop->selection()->selectedPresentations();
-  QList<ModuleBase_ViewerPrs> aSelected = myWorkshop->selection()->getSelected();
-  if (aSelected.size() > 0) {
-    if (isValidSelection(aSelected.first())) {
-      setSelectionCustom(aSelected.first());
-      // the updateObject method should be called to flush the updated sigal. The workshop listens it,
-      // calls validators for the feature and, as a result, updates the Apply button state.
-      updateObject(myFeature);
-      //if (theObj) {
-        //  raisePanel();
-      //} 
-      //updateSelectionName();
-      //emit valuesChanged();
-      emit focusOutWidget(this);
-    }
+  QList<ModuleBase_ViewerPrs> aSelectedPrs = getSelectedEntitiesOrObjects(myWorkshop->selection());
+  if (aSelectedPrs.empty())
+    return;
+  ModuleBase_ViewerPrs aPrs = aSelectedPrs.first();
+  if (aPrs.isEmpty() || !isValidSelection(aPrs))
+    return;
+
+  if (!aPrs.isEmpty() && isValidSelection(aPrs)) {
+    setSelectionCustom(aPrs);
+    // the updateObject method should be called to flush the updated sigal. The workshop listens it,
+    // calls validators for the feature and, as a result, updates the Apply button state.
+    updateObject(myFeature);
+    //if (theObj) {
+      //  raisePanel();
+    //} 
+    //updateSelectionName();
+    //emit valuesChanged();
+    emit focusOutWidget(this);
   }
+
 }
 
 //********************************************************************