]> SALOME platform Git repositories - modules/shaper.git/blobdiff - src/XGUI/XGUI_ContextMenuMgr.cpp
Salome HOME
Merge remote-tracking branch 'remotes/origin/master' into CEA_2019
[modules/shaper.git] / src / XGUI / XGUI_ContextMenuMgr.cpp
index b1fadf67129ea2d66fb6b1571a25d16c88ff4c46..51f9fbec2bfd19da8cf104322a3fb1ca58862315 100644 (file)
@@ -293,6 +293,7 @@ void XGUI_ContextMenuMgr::updateObjectBrowserMenu()
     bool hasCompositeOwner = false;
     bool hasResultInHistory = false;
     bool hasFolder = false;
+    bool canBeDeleted = true;
     ModuleBase_Tools::checkObjects(aObjects, hasResult, hasFeature, hasParameter,
                                    hasCompositeOwner, hasResultInHistory, hasFolder);
     //Process Feature
@@ -332,7 +333,13 @@ void XGUI_ContextMenuMgr::updateObjectBrowserMenu()
         if( aMgr->activeDocument() == aObject->document() )
         {
           action("RENAME_CMD")->setEnabled(true);
-          action("DELETE_CMD")->setEnabled(!hasCompositeOwner);
+          if (aObject->groupName() == ModelAPI_ResultConstruction::group()) {
+            FeaturePtr aFeature = ModelAPI_Feature::feature(aObject);
+            canBeDeleted = aFeature->isInHistory();
+            action("DELETE_CMD")->setEnabled(canBeDeleted);
+          }
+          else
+            action("DELETE_CMD")->setEnabled(!hasCompositeOwner);
           action("CLEAN_HISTORY_CMD")->setEnabled(!hasCompositeOwner &&
                                                   (hasFeature || hasParameter));
         }
@@ -346,6 +353,15 @@ void XGUI_ContextMenuMgr::updateObjectBrowserMenu()
         action("SHOW_ONLY_CMD")->setEnabled(true);
         action("SHADING_CMD")->setEnabled(true);
         action("WIREFRAME_CMD")->setEnabled(true);
+
+        foreach(ObjectPtr aObj, aObjects) {
+          FeaturePtr aFeature = ModelAPI_Feature::feature(aObj);
+          if (!aFeature->isInHistory()) {
+            canBeDeleted = false;
+            break;
+          }
+        }
+        action("DELETE_CMD")->setEnabled(canBeDeleted);
       }
       if (hasFeature && myWorkshop->canMoveFeature())
         action("MOVE_CMD")->setEnabled(true);
@@ -448,8 +464,8 @@ void XGUI_ContextMenuMgr::updateObjectBrowserMenu()
         break;
       }
     if (!hasCompositeOwner && allActive ) {
-      if (hasResult || hasFeature || hasParameter) // #2924 results can be erased
-        action("DELETE_CMD")->setEnabled(true);
+      if (hasResult || hasFeature || hasParameter)  // #2924 results can be erased
+        action("DELETE_CMD")->setEnabled(canBeDeleted);
     }
     if (!hasCompositeOwner && allActive && (hasFeature|| hasParameter))
       action("CLEAN_HISTORY_CMD")->setEnabled(true);
@@ -508,6 +524,8 @@ void XGUI_ContextMenuMgr::updateViewerMenu()
     ObjectPtr aObject;
     foreach(ModuleBase_ViewerPrsPtr aPrs, aPrsList) {
       aObject = aPrs->object();
+      if (!aObject.get())
+        continue;
       GeomShapePtr aShape = aPrs->shape();
       if (aObject->isDisplayed()) {
         isVisible = true;
@@ -593,7 +611,8 @@ void XGUI_ContextMenuMgr::updateViewerMenu()
   if (myWorkshop->canChangeProperty("TRANSPARENCY_CMD"))
     action("TRANSPARENCY_CMD")->setEnabled(true);
 
-  action("DELETE_CMD")->setEnabled(true);
+  // Delete command is not used in viewer pop-up menu
+  action("DELETE_CMD")->setEnabled(false);
 }
 
 void XGUI_ContextMenuMgr::connectObjectBrowser()