OSDN Git Service

Debug and Analyze mode context menus were reshuffling.
authorEike Ziller <eike.ziller@nokia.com>
Wed, 13 Jul 2011 08:35:41 +0000 (10:35 +0200)
committerBill King <bill.king@nokia.com>
Wed, 13 Jul 2011 08:45:00 +0000 (10:45 +0200)
Sort the items alphabetically to counter measure reordering of
QMainWindow child dockwidgets.

Change-Id: Ia79ffcb2dcd0c313184bc7bcafb7a4482db72a21
Reviewed-on: http://codereview.qt.nokia.com/1557
Reviewed-by: Bill King <bill.king@nokia.com>
Reviewed-by: hjk <qthjk@ovi.com>
src/libs/utils/fancymainwindow.cpp

index 5702294..d4b31f4 100644 (file)
@@ -32,6 +32,8 @@
 
 #include "fancymainwindow.h"
 
+#include "qtcassert.h"
+
 #include <QtCore/QList>
 #include <QtCore/QHash>
 
@@ -265,17 +267,28 @@ bool FancyMainWindow::isLocked() const
     return d->m_locked;
 }
 
+static bool actionLessThan(const QAction *action1, const QAction *action2)
+{
+    QTC_ASSERT(action1, return true);
+    QTC_ASSERT(action2, return false);
+    return action1->text().toLower() < action2->text().toLower();
+}
+
 QMenu *FancyMainWindow::createPopupMenu()
 {
-    QMenu *menu = new QMenu(this);
+    QList<QAction *> actions;
     QList<QDockWidget *> dockwidgets = qFindChildren<QDockWidget *>(this);
     for (int i = 0; i < dockwidgets.size(); ++i) {
         QDockWidget *dockWidget = dockwidgets.at(i);
         if (dockWidget->property("managed_dockwidget").isNull()
                 && dockWidget->parentWidget() == this) {
-            menu->addAction(dockwidgets.at(i)->toggleViewAction());
+            actions.append(dockwidgets.at(i)->toggleViewAction());
         }
     }
+    qSort(actions.begin(), actions.end(), actionLessThan);
+    QMenu *menu = new QMenu(this);
+    foreach (QAction *action, actions)
+        menu->addAction(action);
     menu->addAction(&d->m_menuSeparator1);
     menu->addAction(&d->m_toggleLockedAction);
     menu->addAction(&d->m_menuSeparator2);