fix(toolbar): add workbench-level fallback contexts (#230) #235

Merged
forbes merged 2 commits from fix/workbench-toolbar-fallback into main 2026-02-15 01:23:36 +00:00

View File

@@ -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"),