From 47fedc3d8a25ce0c93cc5ee9fb96f93ad530bf09 Mon Sep 17 00:00:00 2001 From: hjk <qtc-committer@nokia.com> Date: Thu, 12 Jan 2012 17:04:14 +0100 Subject: [PATCH] debugger: sort entries in Windows->Views the same way as in the dock context menus Task-number: QTCREATORBUG-6179 Change-Id: I1bc02ebce6de7ff5c12d7baf7c585a414f3972d5 Reviewed-by: hjk <qthjk@ovi.com> --- src/plugins/debugger/debuggermainwindow.cpp | 19 +++++++++++++++++-- src/plugins/debugger/debuggermainwindow.h | 1 + src/plugins/debugger/debuggerplugin.cpp | 2 ++ 3 files changed, 20 insertions(+), 2 deletions(-) diff --git a/src/plugins/debugger/debuggermainwindow.cpp b/src/plugins/debugger/debuggermainwindow.cpp index f3bc617d10e..54b3afabff6 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 ac5f8ee8f2a..bca47b16454 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 51b2ee42d5f..974ed60d0aa 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)) { -- GitLab