Salome HOME
Issue #394 Undo-ing a Sketch element
[modules/shaper.git] / src / XGUI / XGUI_ContextMenuMgr.cpp
index 8a794d7810522816e25eb11140ccafa87fe4a25b..8072aa81d21853732f448c98ff3ce121dd08e953 100644 (file)
@@ -19,6 +19,8 @@
 #include <ModelAPI_Session.h>
 #include <ModelAPI_ResultGroup.h>
 
+#include <ModuleBase_IModule.h>
+
 #include <QAction>
 #include <QContextMenuEvent>
 #include <QMenu>
@@ -145,7 +147,7 @@ QMenu* XGUI_ContextMenuMgr::objectBrowserMenu() const
             aMenu->addAction(action("DEACTIVATE_PART_CMD"));
           else
             aMenu->addAction(action("ACTIVATE_PART_CMD"));
-        } else if (hasFeature) {
+        } else if (hasFeature && aObject->document() == aMgr->activeDocument()) {
           aMenu->addAction(action("EDIT_CMD"));
         } else {
           if (aDisplayer->isVisible(aObject)) {
@@ -181,6 +183,11 @@ QMenu* XGUI_ContextMenuMgr::objectBrowserMenu() const
   }
   aMenu->addSeparator();
   aMenu->addActions(myWorkshop->objectBrowser()->actions());
+
+  ModuleBase_IModule* aModule = myWorkshop->module();
+  if (aModule)
+    aModule->addObjectBrowserItems(aMenu);
+
   if (aMenu->actions().size() > 0) {
     return aMenu;
   }
@@ -244,23 +251,9 @@ void XGUI_ContextMenuMgr::addViewerItems(QMenu* theMenu) const
     }
   }
 
-  aObjects.clear();
-  aObjects = aSelMgr->selection()->selectedPresentations();
-  if (aObjects.size() > 0) {
-    bool hasFeature = true;//false;
-    foreach(ObjectPtr aObject, aObjects)
-    {
-      ResultPtr aRes = std::dynamic_pointer_cast<ModelAPI_Result>(aObject);
-      if (aRes) {
-        hasFeature = true;
-      }
-      //FeaturePtr aFeature = std::dynamic_pointer_cast<ModelAPI_Feature>(aObject);
-      //if (aFeature)
-      //  hasFeature = true;
-    }
-    if (hasFeature)
-      theMenu->addAction(action("DELETE_CMD"));
-  }
+  ModuleBase_IModule* aModule = myWorkshop->module();
+  if (aModule)
+    aModule->addViewerItems(theMenu);
 }
 
 void XGUI_ContextMenuMgr::connectObjectBrowser() const