diff --git a/src/plugins/projectexplorer/buildsettingspropertiespage.cpp b/src/plugins/projectexplorer/buildsettingspropertiespage.cpp
index ac03deb6466736c244dcf453cd0ee430faa135a8..70f84584fd0921c828139d50d3a4129f5bf9d801 100644
--- a/src/plugins/projectexplorer/buildsettingspropertiespage.cpp
+++ b/src/plugins/projectexplorer/buildsettingspropertiespage.cpp
@@ -168,6 +168,17 @@ void BuildSettingsWidget::setupUi()
     connect(m_project, SIGNAL(activeBuildConfigurationChanged()),
             this, SLOT(checkMakeActiveLabel()));
 
+    connect(m_project, SIGNAL(addedBuildConfiguration(ProjectExplorer::BuildConfiguration*)),
+            this, SLOT(addedBuildConfiguration(ProjectExplorer::BuildConfiguration*)));
+
+    connect(m_project, SIGNAL(removedBuildConfiguration(ProjectExplorer::BuildConfiguration*)),
+            this, SLOT(removedBuildConfiguration(ProjectExplorer::BuildConfiguration*)));
+
+    foreach (BuildConfiguration *bc, m_project->buildConfigurations()) {
+        connect(bc, SIGNAL(displayNameChanged()),
+                this, SLOT(buildConfigurationDisplayNameChanged()));
+    }
+
     if (m_project->buildConfigurationFactory())
         connect(m_project->buildConfigurationFactory(), SIGNAL(availableCreationIdsChanged()), SLOT(updateAddButtonMenu()));
 
@@ -175,6 +186,27 @@ void BuildSettingsWidget::setupUi()
     updateBuildSettings();
 }
 
+void BuildSettingsWidget::addedBuildConfiguration(BuildConfiguration *bc)
+{
+    connect(bc, SIGNAL(displayNameChanged()),
+            this, SLOT(buildConfigurationDisplayNameChanged()));
+}
+
+void BuildSettingsWidget::removedBuildConfiguration(BuildConfiguration *bc)
+{
+    disconnect(bc, SIGNAL(displayNameChanged()),
+               this, SLOT(buildConfigurationDisplayNameChanged()));
+}
+
+void BuildSettingsWidget::buildConfigurationDisplayNameChanged()
+{
+    for (int i = 0; i < m_buildConfigurationComboBox->count(); ++i) {
+        BuildConfiguration *bc = m_buildConfigurationComboBox->itemData(i).value<BuildConfiguration *>();
+        m_buildConfigurationComboBox->setItemText(i, bc->displayName());
+    }
+    checkMakeActiveLabel();
+}
+
 void BuildSettingsWidget::addSubWidget(const QString &name, QWidget *widget)
 {
     widget->setContentsMargins(m_leftMargin, 10, 0, 0);
@@ -260,9 +292,6 @@ void BuildSettingsWidget::updateBuildSettings()
 
     m_buildConfigurationComboBox->blockSignals(blocked);
 
-    // TODO Restore position, entry from combbox
-    // TODO? select entry from combobox ?
-
     activeBuildConfigurationChanged();
 }
 
diff --git a/src/plugins/projectexplorer/buildsettingspropertiespage.h b/src/plugins/projectexplorer/buildsettingspropertiespage.h
index 5a805f3e7767e1ade6ae84281bbf55928277a69a..9b1321edccf27f50c719f4f3d0793516253fb446 100644
--- a/src/plugins/projectexplorer/buildsettingspropertiespage.h
+++ b/src/plugins/projectexplorer/buildsettingspropertiespage.h
@@ -98,6 +98,9 @@ private slots:
 
     void setupUi();
 
+    void addedBuildConfiguration(ProjectExplorer::BuildConfiguration *bc);
+    void removedBuildConfiguration(ProjectExplorer::BuildConfiguration *bc);
+    void buildConfigurationDisplayNameChanged();
 private:
     void cloneConfiguration(BuildConfiguration *toClone);
     void deleteConfiguration(BuildConfiguration *toDelete);