diff --git a/src/plugins/projectexplorer/projectwindow.cpp b/src/plugins/projectexplorer/projectwindow.cpp
index f2f27a20e5fef723d27a2059365a560308e3fb5a..c2cb2c28bcb2bab371c100a71aa3f6605a12fa72 100644
--- a/src/plugins/projectexplorer/projectwindow.cpp
+++ b/src/plugins/projectexplorer/projectwindow.cpp
@@ -280,6 +280,9 @@ ProjectWindow::ProjectWindow(QWidget *parent)
     connect(session, SIGNAL(aboutToRemoveProject(ProjectExplorer::Project*)),
             this, SLOT(deregisterProject(ProjectExplorer::Project*)));
 
+    connect(session, SIGNAL(startupProjectChanged(ProjectExplorer::Project*)),
+            this, SLOT(startupProjectChanged(ProjectExplorer::Project *)));
+
     // Update properties to empty project for now:
     showProperties(-1, -1);
 }
@@ -353,8 +356,17 @@ void ProjectWindow::refreshProject()
     if (!m_tabIndexToProject.contains(project))
         return;
 
+    // TODO this changes the subindex
+    int index = m_tabWidget->currentIndex();
     deregisterProject(project);
     registerProject(project);
+    m_tabWidget->setCurrentIndex(index);
+}
+
+void ProjectWindow::startupProjectChanged(ProjectExplorer::Project *p)
+{
+    int index = m_tabIndexToProject.indexOf(p);
+    m_tabWidget->setCurrentIndex(index);
 }
 
 void ProjectWindow::showProperties(int index, int subIndex)
@@ -386,6 +398,7 @@ void ProjectWindow::showProperties(int index, int subIndex)
         }
         ++pos;
     }
+    ProjectExplorerPlugin::instance()->session()->setStartupProject(project);
 }
 
 void ProjectWindow::removeCurrentWidget()
diff --git a/src/plugins/projectexplorer/projectwindow.h b/src/plugins/projectexplorer/projectwindow.h
index 8edcb66d59a0b3bf7cdc770f27c807019f769288..cb3a81892af83b901d1feae30666753ab3fd3244 100644
--- a/src/plugins/projectexplorer/projectwindow.h
+++ b/src/plugins/projectexplorer/projectwindow.h
@@ -92,6 +92,7 @@ private slots:
     void saveStatus();
     void registerProject(ProjectExplorer::Project*);
     void deregisterProject(ProjectExplorer::Project*);
+    void startupProjectChanged(ProjectExplorer::Project *);
 
     void refreshProject();