diff --git a/src/plugins/projectexplorer/project.h b/src/plugins/projectexplorer/project.h
index 2c7f14ab734bbd1086d30afa10e2a908c50b69d9..3d08af5280f640205e34c9121099630e9d965aa1 100644
--- a/src/plugins/projectexplorer/project.h
+++ b/src/plugins/projectexplorer/project.h
@@ -151,7 +151,8 @@ signals:
     void removedRunConfiguration(const QString &name);
     void addedRunConfiguration(const QString &name);
     // This signal is jut there for updating the tree list in the buildsettings wizard
-    void buildConfigurationDisplayNameChanged(const QString &buildConfiguraiton);
+    void buildConfigurationDisplayNameChanged(const QString &buildConfiguration);
+    void environmentChanged(const QString &buildConfiguration);
 
 protected:
     /* This method is called when the project .user file is saved. Simply call
diff --git a/src/plugins/qt4projectmanager/qt4project.cpp b/src/plugins/qt4projectmanager/qt4project.cpp
index 80f2c6f22176bad4d2b745fc1697976f635a5109..6dd9617e999a92ae90cf4a70fd99c53a077ecb3d 100644
--- a/src/plugins/qt4projectmanager/qt4project.cpp
+++ b/src/plugins/qt4projectmanager/qt4project.cpp
@@ -724,7 +724,10 @@ ProjectExplorer::Environment Qt4Project::environment(const QString &buildConfigu
 
 void Qt4Project::setUseSystemEnvironment(const QString &buildConfiguration, bool b)
 {
+    if (useSystemEnvironment(buildConfiguration) == b)
+        return;
     setValue(buildConfiguration, "clearSystemEnvironment", !b);
+    emit environmentChanged(buildConfiguration);
 }
 
 bool Qt4Project::useSystemEnvironment(const QString &buildConfiguration) const
@@ -740,7 +743,11 @@ QList<ProjectExplorer::EnvironmentItem> Qt4Project::userEnvironmentChanges(const
 
 void Qt4Project::setUserEnvironmentChanges(const QString &buildConfig, const QList<ProjectExplorer::EnvironmentItem> &diff)
 {
-    setValue(buildConfig, "userEnvironmentChanges", EnvironmentItem::toStringList(diff));
+    QStringList list = EnvironmentItem::toStringList(diff);
+    if (list == value(buildConfig, "userEnvironmentChanges").toStringList())
+        return;
+    setValue(buildConfig, "userEnvironmentChanges", list);
+    emit environmentChanged(buildConfig);
 }
 
 QString Qt4Project::qtDir(const QString &buildConfiguration) const
diff --git a/src/plugins/qt4projectmanager/qt4runconfiguration.cpp b/src/plugins/qt4projectmanager/qt4runconfiguration.cpp
index b8afd277b45e25aa3c3e0f04f8122cd47fd2070e..c4da15dd23a4e62d7b744afbc58709c7a02df25a 100644
--- a/src/plugins/qt4projectmanager/qt4runconfiguration.cpp
+++ b/src/plugins/qt4projectmanager/qt4runconfiguration.cpp
@@ -71,6 +71,12 @@ Qt4RunConfiguration::Qt4RunConfiguration(Qt4Project *pro, const QString &proFile
 
     connect(pro, SIGNAL(activeBuildConfigurationChanged()),
             this, SLOT(invalidateCachedTargetInformation()));
+
+    connect(pro, SIGNAL(activeBuildConfigurationChanged()),
+            this, SIGNAL(baseEnvironmentChanged()));
+
+    connect(pro, SIGNAL(environmentChanged(QString)),
+            this, SIGNAL(baseEnvironmentChanged()));
 }
 
 Qt4RunConfiguration::~Qt4RunConfiguration()
@@ -178,6 +184,13 @@ Qt4RunConfigurationWidget::Qt4RunConfigurationWidget(Qt4RunConfiguration *qt4Run
     connect(qt4RunConfiguration, SIGNAL(userEnvironmentChangesChanged(QList<ProjectExplorer::EnvironmentItem>)),
             this, SLOT(userEnvironmentChangesChanged(QList<ProjectExplorer::EnvironmentItem>)));
 
+    connect(qt4RunConfiguration, SIGNAL(baseEnvironmentChanged()),
+            this, SLOT(baseEnvironmentChanged()));
+}
+
+void Qt4RunConfigurationWidget::baseEnvironmentChanged()
+{
+    m_environmentWidget->setBaseEnvironment(m_qt4RunConfiguration->baseEnvironment());
 }
 
 void Qt4RunConfigurationWidget::userEnvironmentChangesChanged(const QList<ProjectExplorer::EnvironmentItem> &userChanges)
diff --git a/src/plugins/qt4projectmanager/qt4runconfiguration.h b/src/plugins/qt4projectmanager/qt4runconfiguration.h
index 8572607c9b5291e0c1a8f777e3e734835c879bfa..e9e407b465961812fdc726366ada9a1747f094e8 100644
--- a/src/plugins/qt4projectmanager/qt4runconfiguration.h
+++ b/src/plugins/qt4projectmanager/qt4runconfiguration.h
@@ -93,6 +93,7 @@ signals:
     void workingDirectoryChanged(const QString&);
     void runModeChanged(ProjectExplorer::ApplicationRunConfiguration::RunMode runMode);
     void usingDyldImageSuffixChanged(bool);
+    void baseEnvironmentChanged();
     void userEnvironmentChangesChanged(const QList<ProjectExplorer::EnvironmentItem> &diff);
 
     // note those signals might not emited for every change
@@ -147,6 +148,7 @@ private slots:
     void nameChanged(const QString &name);
     void runModeChanged(ProjectExplorer::ApplicationRunConfiguration::RunMode runMode);
     void userEnvironmentChangesChanged(const QList<ProjectExplorer::EnvironmentItem> &userChanges);
+    void baseEnvironmentChanged();
 
     void effectiveTargetInformationChanged();
     void termToggled(bool);