diff --git a/src/plugins/debugger/debuggermainwindow.cpp b/src/plugins/debugger/debuggermainwindow.cpp index f3bc617d10e5aa0898aec700c6bf58277b0378dc..54b3afabff6a46eab682ddcae681e00824112a8a 100644 --- a/src/plugins/debugger/debuggermainwindow.cpp +++ b/src/plugins/debugger/debuggermainwindow.cpp @@ -136,6 +136,7 @@ public: DebuggerLanguages m_engineDebugLanguages; ActionContainer *m_viewsMenu; + QList<Command *> m_menuCommandsToAdd; Project *m_previousProject; Target *m_previousTarget; @@ -321,7 +322,8 @@ void DebuggerMainWindowPrivate::createViewsMenuItems() Core::Id("Debugger.Views.OpenMemoryEditor"), debugcontext); cmd->setAttribute(Command::CA_Hide); - m_viewsMenu->addAction(cmd); + m_viewsMenu->addAction(cmd, Core::Constants::G_DEFAULT_THREE); + cmd = am->registerAction(q->menuSeparator1(), Core::Id("Debugger.Views.Separator1"), debugcontext); cmd->setAttribute(Command::CA_Hide); @@ -429,7 +431,7 @@ QDockWidget *DebuggerMainWindow::createDockWidget(const DebuggerLanguage &langua Command *cmd = am->registerAction(toggleViewAction, Core::Id(QLatin1String("Debugger.") + widget->objectName()), globalContext); cmd->setAttribute(Command::CA_Hide); - d->m_viewsMenu->addAction(cmd); + d->m_menuCommandsToAdd.append(cmd); dockWidget->installEventFilter(&d->m_resizeEventFilter); @@ -443,6 +445,19 @@ QDockWidget *DebuggerMainWindow::createDockWidget(const DebuggerLanguage &langua return dockWidget; } +static bool sortCommands(Command *cmd1, Command *cmd2) +{ + return cmd1->action()->text() < cmd2->action()->text(); +} + +void DebuggerMainWindow::addStagedMenuEntries() +{ + qSort(d->m_menuCommandsToAdd.begin(), d->m_menuCommandsToAdd.end(), &sortCommands); + foreach (Command *cmd, d->m_menuCommandsToAdd) + d->m_viewsMenu->addAction(cmd); + d->m_menuCommandsToAdd.clear(); +} + QWidget *DebuggerMainWindow::createContents(IMode *mode) { ICore *core = ICore::instance(); diff --git a/src/plugins/debugger/debuggermainwindow.h b/src/plugins/debugger/debuggermainwindow.h index ac5f8ee8f2a1d1dba6c735329d0406a2e8318249..bca47b164544e616cc6311f677d964c5fc6e952a 100644 --- a/src/plugins/debugger/debuggermainwindow.h +++ b/src/plugins/debugger/debuggermainwindow.h @@ -73,6 +73,7 @@ public: // Dockwidgets are registered to the main window. QDockWidget *createDockWidget(const DebuggerLanguage &language, QWidget *widget); + void addStagedMenuEntries(); QWidget *createContents(Core::IMode *mode); QMenu *createPopupMenu(); diff --git a/src/plugins/debugger/debuggerplugin.cpp b/src/plugins/debugger/debuggerplugin.cpp index 51b2ee42d5f262cfc9659750fbfa0506afe66392..974ed60d0aa9ae0172f89d163570105dd66f847f 100644 --- a/src/plugins/debugger/debuggerplugin.cpp +++ b/src/plugins/debugger/debuggerplugin.cpp @@ -3025,6 +3025,8 @@ void DebuggerPluginPrivate::extensionsInitialized() dock = m_mainWindow->createDockWidget(CppLanguage, localsAndWatchers); dock->setProperty(DOCKWIDGET_DEFAULT_AREA, Qt::RightDockWidgetArea); + m_mainWindow->addStagedMenuEntries(); + // Do not fail to load the whole plugin if something goes wrong here. QString errorMessage; if (!parseArguments(m_arguments, &m_cmdLineEnabledEngines, &errorMessage)) {