From 2e01cd2c05a7e66d17de18b089e9b7fa231a9ed4 Mon Sep 17 00:00:00 2001 From: Daniel Teske Date: Thu, 8 Nov 2012 16:58:49 +0100 Subject: [PATCH] BuildSettingsWidget: Recreate BuildConfigWidgets per BuildConfiguration Currently the BuildConfigWidgets are created once and init(bc) is called on switching BuildConfigurations. That's odd since the createCongigWidget() function is on the BuildConfiguration and not the project. Recreating the widgets on switching bcs does introduce some flickering and collapses the BuildEnvironmentWidget, but that's a minor regression. Change-Id: I0672655c8796741fc5ddaba9768817fe2951c335 Reviewed-by: Tobias Hunger --- .../buildsettingspropertiespage.cpp | 14 ++++---------- 1 file changed, 4 insertions(+), 10 deletions(-) diff --git a/src/plugins/projectexplorer/buildsettingspropertiespage.cpp b/src/plugins/projectexplorer/buildsettingspropertiespage.cpp index 48545418268..dc4b2f0a86e 100644 --- a/src/plugins/projectexplorer/buildsettingspropertiespage.cpp +++ b/src/plugins/projectexplorer/buildsettingspropertiespage.cpp @@ -235,6 +235,9 @@ void BuildSettingsWidget::updateBuildSettings() // update buttons m_removeButton->setEnabled(m_target->buildConfigurations().size() > 1); + if (!m_buildConfiguration) + return; + // Add pages BuildConfigWidget *generalConfigWidget = m_buildConfiguration->createConfigWidget(); addSubWidget(generalConfigWidget); @@ -267,11 +270,7 @@ void BuildSettingsWidget::updateActiveConfiguration() BuildConfigurationModel *model = static_cast(m_buildConfigurationComboBox->model()); m_buildConfigurationComboBox->setCurrentIndex(model->indexFor(m_buildConfiguration).row()); - foreach (QWidget *widget, subWidgets()) { - if (BuildConfigWidget *buildStepWidget = qobject_cast(widget)) { - buildStepWidget->init(m_buildConfiguration); - } - } + updateBuildSettings(); } void BuildSettingsWidget::createConfiguration() @@ -291,7 +290,6 @@ void BuildSettingsWidget::createConfiguration() QTC_CHECK(bc->id() == id); m_target->setActiveBuildConfiguration(bc); - updateBuildSettings(); } void BuildSettingsWidget::cloneConfiguration() @@ -357,8 +355,6 @@ void BuildSettingsWidget::cloneConfiguration(BuildConfiguration *sourceConfigura bc->setDisplayName(name); m_target->addBuildConfiguration(bc); - updateBuildSettings(); - m_target->setActiveBuildConfiguration(bc); } @@ -392,6 +388,4 @@ void BuildSettingsWidget::deleteConfiguration(BuildConfiguration *deleteConfigur } m_target->removeBuildConfiguration(deleteConfiguration); - - updateBuildSettings(); }