diff --git a/src/plugins/projectexplorer/projectfilewizardextension.cpp b/src/plugins/projectexplorer/projectfilewizardextension.cpp
index 33b7d37076004bf1da020b539ddf8b51e39c4966..277b98e564d48465fa2969235c83140c6c10311c 100644
--- a/src/plugins/projectexplorer/projectfilewizardextension.cpp
+++ b/src/plugins/projectexplorer/projectfilewizardextension.cpp
@@ -141,20 +141,8 @@ QList<QWizardPage *> ProjectFileWizardExtension::extensionPages(const Core::IWiz
     // Disable "add project to project"
     const bool hasProjects = !m_context->projects.empty();
     if (hasProjects) {
-        // Compile list of names and find current project if there is one
-        QStringList projectNames;
-        ProjectNode *current = currentProject();
-        int currentIndex = -1;
-        const int count = m_context->projects.size();
-        for (int i = 0; i < count; i++) {
-            ProjectNode *pn = m_context->projects.at(i);
-            projectNames.push_back(QFileInfo(pn->path()).fileName());
-            if (current == pn)
-                currentIndex = i;
-        }
-        m_context->page->setProjects(projectNames);
-        if (currentIndex != -1)
-            m_context->page->setCurrentProjectIndex(currentIndex);
+        m_context->page->setProjects(m_context->projects);
+        m_context->page->setCurrentProject(currentProject());
     }
     m_context->page->setAddToProjectEnabled(hasProjects && wizard->kind() != Core::IWizard::ProjectWizard);
 
@@ -166,7 +154,7 @@ bool ProjectFileWizardExtension::process(const QList<Core::GeneratedFile> &files
     typedef QMultiMap<FileType, QString> TypeFileMap;
     // Add files to project && version control
     if (m_context->page->addToProject()) {
-        ProjectNode *project = m_context->projects.at(m_context->page->currentProjectIndex());
+        ProjectNode *project = m_context->page->currentProject();
         // Split into lists by file type and add
         TypeFileMap typeFileMap;
         foreach (const Core::GeneratedFile &generatedFile, files) {
diff --git a/src/plugins/projectexplorer/projectwizardpage.cpp b/src/plugins/projectexplorer/projectwizardpage.cpp
index ff4d2b6060a1b9a2bda7302b16d87fb9596b6e2f..57c1d512c7faeb26f0b6a2650d973599168f3aeb 100644
--- a/src/plugins/projectexplorer/projectwizardpage.cpp
+++ b/src/plugins/projectexplorer/projectwizardpage.cpp
@@ -29,13 +29,17 @@
 
 #include "projectwizardpage.h"
 #include "ui_projectwizardpage.h"
+#include "projectnodes.h"
 
 #include <QtCore/QDebug>
+#include <QtCore/QFileInfo>
 #include <QtCore/QTextStream>
 
 using namespace ProjectExplorer;
 using namespace Internal;
 
+Q_DECLARE_METATYPE(ProjectExplorer::ProjectNode*)
+
 ProjectWizardPage::ProjectWizardPage(QWidget *parent) :
     QWizardPage(parent),
     m_ui(new Ui::WizardPage)
@@ -51,13 +55,19 @@ ProjectWizardPage::~ProjectWizardPage()
     delete m_ui;
 }
 
-void ProjectWizardPage::setProjects(const QStringList &l)
+void ProjectWizardPage::setProjects(const QList<ProjectNode*> &projectNodes)
 {
-    QStringList list = l;
-    list.removeDuplicates();
-    list.sort();
+    QMap<QString,ProjectNode*> projectMap;
+    foreach (ProjectNode *node, projectNodes) {
+        QString name = QFileInfo(node->path()).fileName();
+        if (!projectMap.contains(name))
+            projectMap.insert(name, node);
+    }
+
     m_ui->projectComboBox->clear();
-    m_ui->projectComboBox->addItems(list);
+    foreach (const QString &name, projectMap.keys()) {
+        m_ui->projectComboBox->addItem(name, qVariantFromValue(projectMap.value(name)));
+    }
 }
 
 void ProjectWizardPage::setAddToProjectEnabled(bool b)
@@ -69,14 +79,22 @@ void ProjectWizardPage::setAddToProjectEnabled(bool b)
     m_ui->projectComboBox->setEnabled(b);
 }
 
-int ProjectWizardPage::currentProjectIndex() const
+ProjectNode *ProjectWizardPage::currentProject() const
 {
-    return m_ui->projectComboBox->currentIndex();
+    QVariant variant = m_ui->projectComboBox->itemData(m_ui->projectComboBox->currentIndex());
+    return qVariantValue<ProjectNode*>(variant);
 }
 
-void ProjectWizardPage::setCurrentProjectIndex(int i)
+void ProjectWizardPage::setCurrentProject(ProjectNode *projectNode)
 {
-    m_ui->projectComboBox->setCurrentIndex(i);
+    if (!projectNode)
+        return;
+    for (int i = 0; i < m_ui->projectComboBox->count(); ++i) {
+        if (qVariantValue<ProjectNode*>(m_ui->projectComboBox->itemData(i)) == projectNode) {
+            m_ui->projectComboBox->setCurrentIndex(i);
+            return;
+        }
+    }
 }
 
 bool ProjectWizardPage::addToProject() const
diff --git a/src/plugins/projectexplorer/projectwizardpage.h b/src/plugins/projectexplorer/projectwizardpage.h
index cc018b5a932e78e1c22f8d5f8cc481e219a28289..7244a499ff823bbe6a8573240f129ead47d70179 100644
--- a/src/plugins/projectexplorer/projectwizardpage.h
+++ b/src/plugins/projectexplorer/projectwizardpage.h
@@ -55,9 +55,10 @@ public:
     explicit ProjectWizardPage(QWidget *parent = 0);
     virtual ~ProjectWizardPage();
 
-    void setProjects(const QStringList &);
-    void setCurrentProjectIndex(int);
-    int currentProjectIndex() const;
+    void setProjects(const QList<ProjectNode *> &);
+    void setCurrentProject(ProjectNode *);
+
+    ProjectNode *currentProject() const;
 
     void setAddToProjectEnabled(bool b);
     bool addToProject() const;