From 35bcc49bdfd40e058b53e18f14de455d3709dcae Mon Sep 17 00:00:00 2001
From: Tobias Hunger <tobias.hunger@nokia.com>
Date: Mon, 22 Feb 2010 14:39:59 +0100
Subject: [PATCH] Sort targets in miniprojecttargetselector

 ... based on their display names

Reviewed-by: Daniel Molkentin
---
 .../miniprojecttargetselector.cpp             | 22 +++++++++++++++----
 1 file changed, 18 insertions(+), 4 deletions(-)

diff --git a/src/plugins/projectexplorer/miniprojecttargetselector.cpp b/src/plugins/projectexplorer/miniprojecttargetselector.cpp
index d107b660aad..64f81901f5f 100644
--- a/src/plugins/projectexplorer/miniprojecttargetselector.cpp
+++ b/src/plugins/projectexplorer/miniprojecttargetselector.cpp
@@ -101,9 +101,10 @@ void ProjectListWidget::setBuildComboPopup()
 
 void ProjectListWidget::setTarget(int index)
 {
-    QList<Target *> targets(m_project->targets());
-    if (index >= 0 && index < targets.count())
-        m_project->setActiveTarget(targets.at(index));
+    MiniTargetWidget *mtw = qobject_cast<MiniTargetWidget *>(itemWidget(item(index)));
+    if (!mtw)
+        return;
+    m_project->setActiveTarget(mtw->target());
 }
 
 MiniTargetWidget::MiniTargetWidget(Target *target, QWidget *parent) :
@@ -406,7 +407,20 @@ void MiniProjectTargetSelector::addTarget(ProjectExplorer::Target *target, bool
     ProjectListWidget *plw = qobject_cast<ProjectListWidget*>(m_widgetStack->widget(index));
 
     QListWidgetItem *lwi = new QListWidgetItem();
-    plw->addItem(lwi);
+
+    // Sort on insert:
+    for (int idx = 0; idx <= plw->count(); ++idx) {
+        QListWidgetItem *itm(plw->item(idx));
+        MiniTargetWidget *mtw(qobject_cast<MiniTargetWidget *>(plw->itemWidget(itm)));
+        if (!mtw && idx < plw->count())
+            continue;
+        if (idx == plw->count() ||
+            mtw->target()->displayName() > target->displayName()) {
+            plw->insertItem(idx, lwi);
+            break;
+        }
+    }
+
     MiniTargetWidget *targetWidget = new MiniTargetWidget(target);
     connect(targetWidget, SIGNAL(changed()), this, SLOT(updateAction()));
     targetWidget->installEventFilter(this);
-- 
GitLab