From 269d4ad48285c2848a397a11ee58a1911a795160 Mon Sep 17 00:00:00 2001 From: vsv Date: Wed, 7 Oct 2015 17:16:19 +0300 Subject: [PATCH] Enable change mode items only in case if the object currently has opposite display mode --- src/XGUI/XGUI_ContextMenuMgr.cpp | 21 +++++++++++++++++---- 1 file changed, 17 insertions(+), 4 deletions(-) diff --git a/src/XGUI/XGUI_ContextMenuMgr.cpp b/src/XGUI/XGUI_ContextMenuMgr.cpp index c65481a08..406cc673c 100644 --- a/src/XGUI/XGUI_ContextMenuMgr.cpp +++ b/src/XGUI/XGUI_ContextMenuMgr.cpp @@ -177,8 +177,14 @@ void XGUI_ContextMenuMgr::updateObjectBrowserMenu() ObjectPtr aObject = aObjects.first(); if (aObject) { if (hasResult && myWorkshop->canBeShaded(aObject)) { - action("WIREFRAME_CMD")->setEnabled(true); - action("SHADING_CMD")->setEnabled(true); + XGUI_Displayer::DisplayMode aMode = aDisplayer->displayMode(aObject); + if (aMode != XGUI_Displayer::NoMode) { + action("WIREFRAME_CMD")->setEnabled(aMode == XGUI_Displayer::Shading); + action("SHADING_CMD")->setEnabled(aMode == XGUI_Displayer::Wireframe); + } else { + action("WIREFRAME_CMD")->setEnabled(true); + action("SHADING_CMD")->setEnabled(true); + } } if (!hasFeature) { bool aHasSubResults = ModelAPI_Tools::hasSubResults( @@ -278,8 +284,15 @@ void XGUI_ContextMenuMgr::updateViewerMenu() } if (isVisible) { if (canBeShaded) { - action("WIREFRAME_CMD")->setEnabled(true); - action("SHADING_CMD")->setEnabled(true); + XGUI_Displayer* aDisplayer = myWorkshop->displayer(); + XGUI_Displayer::DisplayMode aMode = aDisplayer->displayMode(aObject); + if (aMode != XGUI_Displayer::NoMode) { + action("WIREFRAME_CMD")->setEnabled(aMode == XGUI_Displayer::Shading); + action("SHADING_CMD")->setEnabled(aMode == XGUI_Displayer::Wireframe); + } else { + action("WIREFRAME_CMD")->setEnabled(true); + action("SHADING_CMD")->setEnabled(true); + } } action("SHOW_ONLY_CMD")->setEnabled(true); action("HIDE_CMD")->setEnabled(true); -- 2.39.2