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);