X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FXGUI%2FXGUI_ContextMenuMgr.cpp;h=8072aa81d21853732f448c98ff3ce121dd08e953;hb=9c54fb01877c455abb5b5ff22e384468f795b328;hp=8f4a49175b051d78f46dfee7224e8db3e184691e;hpb=7bf19255421b34594c7b0a76d0ce28166d0ce895;p=modules%2Fshaper.git diff --git a/src/XGUI/XGUI_ContextMenuMgr.cpp b/src/XGUI/XGUI_ContextMenuMgr.cpp index 8f4a49175..8072aa81d 100644 --- a/src/XGUI/XGUI_ContextMenuMgr.cpp +++ b/src/XGUI/XGUI_ContextMenuMgr.cpp @@ -19,6 +19,8 @@ #include #include +#include + #include #include #include @@ -145,14 +147,16 @@ 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)) { - if (aDisplayer->displayMode(aObject) == XGUI_Displayer::Shading) - aMenu->addAction(action("WIREFRAME_CMD")); - else - aMenu->addAction(action("SHADING_CMD")); + if (aDisplayer->canBeShaded(aObject)) { + if (aDisplayer->displayMode(aObject) == XGUI_Displayer::Shading) + aMenu->addAction(action("WIREFRAME_CMD")); + else + aMenu->addAction(action("SHADING_CMD")); + } aMenu->addSeparator(); aMenu->addAction(action("HIDE_CMD")); } else { @@ -179,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; } @@ -206,20 +215,24 @@ void XGUI_ContextMenuMgr::addViewerItems(QMenu* theMenu) const // theMenu->addAction(action("EDIT_CMD")); bool isVisible = false; bool isShading = false; + bool canBeShaded = false; foreach(ObjectPtr aObject, aObjects) { ResultPtr aRes = std::dynamic_pointer_cast(aObject); if (aRes && myWorkshop->displayer()->isVisible(aRes)) { isVisible = true; + canBeShaded = myWorkshop->displayer()->canBeShaded(aObject); isShading = (myWorkshop->displayer()->displayMode(aObject) == XGUI_Displayer::Shading); break; } } if (isVisible) { - if (isShading) - theMenu->addAction(action("WIREFRAME_CMD")); - else - theMenu->addAction(action("SHADING_CMD")); + if (canBeShaded) { + if (isShading) + theMenu->addAction(action("WIREFRAME_CMD")); + else + theMenu->addAction(action("SHADING_CMD")); + } theMenu->addSeparator(); theMenu->addAction(action("SHOW_ONLY_CMD")); theMenu->addAction(action("HIDE_CMD")); @@ -237,6 +250,10 @@ void XGUI_ContextMenuMgr::addViewerItems(QMenu* theMenu) const aSubMenu->addActions(aMDI->actions()); } } + + ModuleBase_IModule* aModule = myWorkshop->module(); + if (aModule) + aModule->addViewerItems(theMenu); } void XGUI_ContextMenuMgr::connectObjectBrowser() const