From 1212619ba6a31a05385f2dd91f37c914bc5133cc Mon Sep 17 00:00:00 2001 From: vsv Date: Fri, 4 Sep 2015 18:36:22 +0300 Subject: [PATCH] Issue #807: Disable Show/Hide commands for objects from non-active document --- src/XGUI/XGUI_ContextMenuMgr.cpp | 24 +++++++++++++++++------- 1 file changed, 17 insertions(+), 7 deletions(-) diff --git a/src/XGUI/XGUI_ContextMenuMgr.cpp b/src/XGUI/XGUI_ContextMenuMgr.cpp index 1a138f747..adbbdc5a2 100644 --- a/src/XGUI/XGUI_ContextMenuMgr.cpp +++ b/src/XGUI/XGUI_ContextMenuMgr.cpp @@ -8,6 +8,7 @@ #include "XGUI_ViewerProxy.h" #include "XGUI_Selection.h" #include "XGUI_SalomeConnector.h" +#include "XGUI_DataModel.h" #include @@ -59,7 +60,7 @@ void XGUI_ContextMenuMgr::createActions() addAction("RENAME_CMD", aAction); connect(aAction, SIGNAL(triggered(bool)), this, SLOT(onRename())); - aAction = new QAction(QIcon(":pictures/move.png"), tr("Move..."), this); + aAction = new QAction(QIcon(":pictures/move.png"), tr("Move down"), this); addAction("MOVE_CMD", aAction); aAction = new QAction(QIcon(":pictures/color.png"), tr("Color..."), this); @@ -217,8 +218,7 @@ void XGUI_ContextMenuMgr::updateObjectBrowserMenu() } bool allActive = true; foreach( ObjectPtr aObject, aObjects ) - if( aMgr->activeDocument() != aObject->document() ) - { + if( aMgr->activeDocument() != aObject->document() ) { allActive = false; break; } @@ -228,10 +228,20 @@ void XGUI_ContextMenuMgr::updateObjectBrowserMenu() } } - bool isPartSetDocActive = - ModelAPI_Session::get()->activeDocument()==ModelAPI_Session::get()->moduleDocument(); - if( !isPartSetDocActive ) - { + // Show/Hide command has to be disabled for objects from non active document + XGUI_ObjectsBrowser* aOB = myWorkshop->objectBrowser(); + XGUI_DataModel* aModel = aOB->dataModel(); + bool aDeactivate = false; + foreach (ObjectPtr aObj, aObjects) { + Qt::ItemFlags aFlags = aModel->flags(aModel->objectIndex(aObj)); + // Check is the object is accessible for editing + if ((aFlags & Qt::ItemIsEditable) == 0) { + aDeactivate = true; + break; + } + } + if (aDeactivate) { + // If at leas a one objec can not be edited then Show/Hide has to be disabled action("SHOW_CMD")->setEnabled(false); action("HIDE_CMD")->setEnabled(false); action("SHOW_ONLY_CMD")->setEnabled(false); -- 2.39.2