diff --git a/interfaces/contextmenuextension.h b/interfaces/contextmenuextension.h --- a/interfaces/contextmenuextension.h +++ b/interfaces/contextmenuextension.h @@ -58,8 +58,10 @@ static const QString OpenEmbeddedGroup; /** menu group to contain open with external application actions */ static const QString OpenExternalGroup; - /** menu group to contain analyze actions */ - static const QString AnalyzeGroup; + /** menu group to contain file analysis actions */ + static const QString AnalyzeFileGroup; + /** menu group to contain project analysis actions */ + static const QString AnalyzeProjectGroup; /** The menu group containing navigation actions */ static const QString NavigationGroup; diff --git a/interfaces/contextmenuextension.cpp b/interfaces/contextmenuextension.cpp --- a/interfaces/contextmenuextension.cpp +++ b/interfaces/contextmenuextension.cpp @@ -42,7 +42,8 @@ const QString ContextMenuExtension::ProjectGroup = QStringLiteral("ProjectGroup"); const QString ContextMenuExtension::OpenEmbeddedGroup = QStringLiteral("OpenEmbeddedGroup"); const QString ContextMenuExtension::OpenExternalGroup = QStringLiteral("OpenExternalGroup"); -const QString ContextMenuExtension::AnalyzeGroup = QStringLiteral("AnalyzeGroup"); +const QString ContextMenuExtension::AnalyzeFileGroup = QStringLiteral("AnalyzeFileGroup"); +const QString ContextMenuExtension::AnalyzeProjectGroup = QStringLiteral("AnalyzeProjectGroup"); const QString ContextMenuExtension::NavigationGroup = QStringLiteral("NavigationGroup"); const QString ContextMenuExtension::ExtensionGroup = QStringLiteral("ExtensionGroup"); @@ -98,7 +99,9 @@ QMenu* menu, const QList& extensions, const QString& groupName, - const QString& groupDisplayName = QString()) + const QString& groupDisplayName = QString(), + bool forceAddMenu = false, + bool addSeparator = true) { QList groupActions; for (const ContextMenuExtension& extension : extensions) { @@ -113,15 +116,18 @@ } QMenu* groupMenu = menu; - if (groupActions.count() > 1 && !groupDisplayName.isEmpty()) { + if ((groupActions.count() > 1 && !groupDisplayName.isEmpty()) || + (!groupDisplayName.isEmpty() && forceAddMenu)) { groupMenu = menu->addMenu(groupDisplayName); } for (QAction* action : groupActions) { groupMenu->addAction(action); } - menu->addSeparator(); + if (addSeparator) { + menu->addSeparator(); + } } void ContextMenuExtension::populateMenu(QMenu* menu, const QList& extensions) @@ -132,7 +138,8 @@ populateMenuWithGroup(menu, extensions, DebugGroup, i18n("Debug")); populateMenuWithGroup(menu, extensions, RefactorGroup, i18n("Refactor")); populateMenuWithGroup(menu, extensions, NavigationGroup); - populateMenuWithGroup(menu, extensions, AnalyzeGroup, i18n("Analyze With")); + populateMenuWithGroup(menu, extensions, AnalyzeFileGroup, i18n("Analyze Current File With"), true, false); + populateMenuWithGroup(menu, extensions, AnalyzeProjectGroup, i18n("Analyze Current Project With"), true); populateMenuWithGroup(menu, extensions, VcsGroup); populateMenuWithGroup(menu, extensions, ExtensionGroup); } diff --git a/plugins/projectmanagerview/projecttreeview.cpp b/plugins/projectmanagerview/projecttreeview.cpp --- a/plugins/projectmanagerview/projecttreeview.cpp +++ b/plugins/projectmanagerview/projecttreeview.cpp @@ -354,7 +354,7 @@ fileActions += ext.actions(ContextMenuExtension::FileGroup); projectActions += ext.actions(ContextMenuExtension::ProjectGroup); vcsActions += ext.actions(ContextMenuExtension::VcsGroup); - analyzeActions += ext.actions(ContextMenuExtension::AnalyzeGroup); + analyzeActions += ext.actions(ContextMenuExtension::AnalyzeProjectGroup); extActions += ext.actions(ContextMenuExtension::ExtensionGroup); runActions += ext.actions(ContextMenuExtension::RunGroup); }