diff --git a/src/Gui/EditingContext.cpp b/src/Gui/EditingContext.cpp index 73133a98f5..5794061892 100644 --- a/src/Gui/EditingContext.cpp +++ b/src/Gui/EditingContext.cpp @@ -36,6 +36,7 @@ #include "ToolBarManager.h" #include "ViewProvider.h" #include "ViewProviderDocumentObject.h" +#include "WorkbenchManager.h" using namespace Gui; @@ -330,6 +331,49 @@ void EditingContextResolver::registerBuiltinContexts() }, }); + // --- Workbench-level fallbacks (priority 20) --- + // Show basic workbench toolbars when the workbench is active but no + // specific editing context matches (e.g. no Body selected in PartDesign). + + registerContext({ + /*.id =*/QStringLiteral("partdesign.workbench"), + /*.labelTemplate =*/QStringLiteral("Part Design"), + /*.color =*/QLatin1String(CatppuccinMocha::Mauve), + /*.toolbars =*/ + {QStringLiteral("Part Design Helper Features"), QStringLiteral("Sketcher")}, + /*.priority =*/20, + /*.match =*/ + []() { + return WorkbenchManager::instance()->activeName() == "PartDesignWorkbench"; + }, + }); + + registerContext({ + /*.id =*/QStringLiteral("sketcher.workbench"), + /*.labelTemplate =*/QStringLiteral("Sketcher"), + /*.color =*/QLatin1String(CatppuccinMocha::Green), + /*.toolbars =*/ + {QStringLiteral("Sketcher"), QStringLiteral("Sketcher Tools")}, + /*.priority =*/20, + /*.match =*/ + []() { + return WorkbenchManager::instance()->activeName() == "SketcherWorkbench"; + }, + }); + + registerContext({ + /*.id =*/QStringLiteral("assembly.workbench"), + /*.labelTemplate =*/QStringLiteral("Assembly"), + /*.color =*/QLatin1String(CatppuccinMocha::Blue), + /*.toolbars =*/ + {QStringLiteral("Assembly")}, + /*.priority =*/20, + /*.match =*/ + []() { + return WorkbenchManager::instance()->activeName() == "AssemblyWorkbench"; + }, + }); + // --- Empty document --- registerContext({ /*.id =*/QStringLiteral("empty_document"),