From 3ed30f09cf779c5b50533f460b4ee522c9d0bf3f Mon Sep 17 00:00:00 2001 From: hjk Date: Tue, 15 Jul 2014 12:47:15 +0200 Subject: [PATCH] {Fancy,Debugger}MainWindow: Consolidate dock actions menu population There are several places where the list of dock actions are shown, and at least two where it was created. Change-Id: Ib2c18e602b5d6f57c1b7471bd75f3b989d536600 Reviewed-by: Eike Ziller --- src/libs/utils/fancymainwindow.cpp | 10 ++++----- src/libs/utils/fancymainwindow.h | 2 +- src/plugins/debugger/debuggermainwindow.cpp | 24 ++++----------------- src/plugins/debugger/debuggermainwindow.h | 1 - 4 files changed, 9 insertions(+), 28 deletions(-) diff --git a/src/libs/utils/fancymainwindow.cpp b/src/libs/utils/fancymainwindow.cpp index 44259411c72..62c3d912555 100644 --- a/src/libs/utils/fancymainwindow.cpp +++ b/src/libs/utils/fancymainwindow.cpp @@ -377,9 +377,9 @@ void FancyMainWindow::showEvent(QShowEvent *event) void FancyMainWindow::contextMenuEvent(QContextMenuEvent *event) { - QMenu *menu = createPopupMenu(); - menu->exec(event->globalPos()); - delete menu; + QMenu menu; + addDockActionsToMenu(&menu); + menu.exec(event->globalPos()); } void FancyMainWindow::handleVisibilityChanged(bool visible) @@ -448,7 +448,7 @@ static bool actionLessThan(const QAction *action1, const QAction *action2) return action1->text().toLower() < action2->text().toLower(); } -QMenu *FancyMainWindow::createPopupMenu() +void FancyMainWindow::addDockActionsToMenu(QMenu *menu) { QList actions; QList dockwidgets = findChildren(); @@ -460,12 +460,10 @@ QMenu *FancyMainWindow::createPopupMenu() } } qSort(actions.begin(), actions.end(), actionLessThan); - QMenu *menu = new QMenu(this); foreach (QAction *action, actions) menu->addAction(action); menu->addAction(&d->m_menuSeparator); menu->addAction(&d->m_resetLayoutAction); - return menu; } QAction *FancyMainWindow::menuSeparator() const diff --git a/src/libs/utils/fancymainwindow.h b/src/libs/utils/fancymainwindow.h index 736e6ce9b51..8d2bb27e45f 100644 --- a/src/libs/utils/fancymainwindow.h +++ b/src/libs/utils/fancymainwindow.h @@ -67,7 +67,7 @@ public: QAction *resetLayoutAction() const; // Overwritten to add locked/reset. - virtual QMenu *createPopupMenu(); + void addDockActionsToMenu(QMenu *menu); QDockWidget *toolBarDockWidget() const; void setToolBarDockWidget(QDockWidget *dock); diff --git a/src/plugins/debugger/debuggermainwindow.cpp b/src/plugins/debugger/debuggermainwindow.cpp index 190b0152b2c..fd1fbf490ce 100644 --- a/src/plugins/debugger/debuggermainwindow.cpp +++ b/src/plugins/debugger/debuggermainwindow.cpp @@ -128,7 +128,6 @@ public: DebuggerLanguages m_engineDebugLanguages; ActionContainer *m_viewsMenu; - QList m_menuCommandsToAdd; Project *m_previousProject; Target *m_previousTarget; @@ -319,10 +318,6 @@ void DebuggerMainWindowPrivate::createViewsMenuItems() "Debugger.Views.Separator", debugcontext); cmd->setAttribute(Command::CA_Hide); m_viewsMenu->addAction(cmd, Core::Constants::G_DEFAULT_THREE); - cmd = Core::ActionManager::registerAction(q->resetLayoutAction(), - "Debugger.Views.ResetSimple", debugcontext); - cmd->setAttribute(Command::CA_Hide); - m_viewsMenu->addAction(cmd, Core::Constants::G_DEFAULT_THREE); } void DebuggerMainWindowPrivate::addLanguage(DebuggerLanguage languageId, @@ -410,7 +405,6 @@ QDockWidget *DebuggerMainWindow::createDockWidget(const DebuggerLanguage &langua Command *cmd = Core::ActionManager::registerAction(toggleViewAction, Core::Id("Debugger.").withSuffix(widget->objectName()), globalContext); cmd->setAttribute(Command::CA_Hide); - d->m_menuCommandsToAdd.append(cmd); dockWidget->installEventFilter(&d->m_resizeEventFilter); @@ -426,12 +420,7 @@ QDockWidget *DebuggerMainWindow::createDockWidget(const DebuggerLanguage &langua void DebuggerMainWindow::addStagedMenuEntries() { - Utils::sort(d->m_menuCommandsToAdd, [](Command *cmd1, Command *cmd2) { - return cmd1->action()->text() < cmd2->action()->text(); - }); - foreach (Command *cmd, d->m_menuCommandsToAdd) - d->m_viewsMenu->addAction(cmd); - d->m_menuCommandsToAdd.clear(); + addDockActionsToMenu(d->m_viewsMenu->menu()); } QWidget *DebuggerMainWindow::createContents(IMode *mode) @@ -543,9 +532,9 @@ void DebuggerMainWindow::writeSettings() const void DebuggerMainWindow::showViewsMenu() { - QMenu *menu = createPopupMenu(); - menu->exec(d->m_viewButton->mapToGlobal(QPoint())); - delete menu; + QMenu menu; + addDockActionsToMenu(&menu); + menu.exec(d->m_viewButton->mapToGlobal(QPoint())); } void DebuggerMainWindow::readSettings() @@ -613,11 +602,6 @@ bool DebuggerMainWindowPrivate::isQmlActive() const return (m_activeDebugLanguages & QmlLanguage); } -QMenu *DebuggerMainWindow::createPopupMenu() -{ - return FancyMainWindow::createPopupMenu(); -} - void DebuggerMainWindowPrivate::setSimpleDockWidgetArrangement() { using namespace Constants; diff --git a/src/plugins/debugger/debuggermainwindow.h b/src/plugins/debugger/debuggermainwindow.h index 6ebc2e5c9c2..1336659aae3 100644 --- a/src/plugins/debugger/debuggermainwindow.h +++ b/src/plugins/debugger/debuggermainwindow.h @@ -86,7 +86,6 @@ public: void addStagedMenuEntries(); QWidget *createContents(Core::IMode *mode); - QMenu *createPopupMenu(); void readSettings(); void writeSettings() const;