diff --git a/src/Mod/Measure/Gui/Command.cpp b/src/Mod/Measure/Gui/Command.cpp index b5ef15e6fe..7a572250b0 100644 --- a/src/Mod/Measure/Gui/Command.cpp +++ b/src/Mod/Measure/Gui/Command.cpp @@ -21,9 +21,14 @@ #include "PreCompiled.h" +#include #include #include #include +#include +#include +#include +#include #include "TaskMeasure.h" @@ -55,15 +60,21 @@ void StdCmdMeasure::activated(int iMsg) Gui::Control().showDialog(task); } +bool StdCmdMeasure::isActive() { + App::Document* doc = App::GetApplication().getActiveDocument(); + if (!doc || doc->countObjectsOfType(App::GeoFeature::getClassTypeId()) == 0) { + return false; + } -bool StdCmdMeasure::isActive() -{ - return true; + Gui::MDIView *view = Gui::getMainWindow()->activeWindow(); + if (view && view->isDerivedFrom(Gui::View3DInventor::getClassTypeId())) { + Gui::View3DInventorViewer *viewer = + dynamic_cast(view)->getViewer(); + return !viewer->isEditing(); + } + return false; } - - - void CreateMeasureCommands() { Gui::CommandManager& rcCmdMgr = Gui::Application::Instance->commandManager();