diff --git a/src/plugins/qt4projectmanager/makestep.cpp b/src/plugins/qt4projectmanager/makestep.cpp index 36dc0afaa4e67310dfc374899d54f752bb9ef15a..c79b13d67debe523e3023d9aa79ffee413f86f90 100644 --- a/src/plugins/qt4projectmanager/makestep.cpp +++ b/src/plugins/qt4projectmanager/makestep.cpp @@ -305,7 +305,7 @@ void MakeStep::setUserArguments(const QString &arguments) } MakeStepConfigWidget::MakeStepConfigWidget(MakeStep *makeStep) - : BuildStepConfigWidget(), m_ui(new Internal::Ui::MakeStep), m_makeStep(makeStep), m_ignoreChange(false) + : BuildStepConfigWidget(), m_ui(new Internal::Ui::MakeStep), m_makeStep(makeStep), m_bc(0), m_ignoreChange(false) { m_ui->setupUi(this); @@ -327,13 +327,26 @@ MakeStepConfigWidget::MakeStepConfigWidget(MakeStep *makeStep) connect(makeStep, SIGNAL(userArgumentsChanged()), this, SLOT(userArgumentsChanged())); - connect(makeStep->buildConfiguration(), SIGNAL(buildDirectoryChanged()), - this, SLOT(updateDetails())); - connect(makeStep->buildConfiguration(), SIGNAL(toolChainChanged()), - this, SLOT(updateDetails())); - connect(makeStep->qt4BuildConfiguration(), SIGNAL(qtVersionChanged()), - this, SLOT(qtVersionChanged())); + ProjectExplorer::BuildConfiguration *bc = makeStep->buildConfiguration(); + if (!bc) { + // That means the step is in the deploylist, so we listen to the active build config + // changed signal and update various things in return + bc = makeStep->target()->activeBuildConfiguration(); + m_bc = bc; + connect (makeStep->target(), SIGNAL(activeBuildConfigurationChanged(ProjectExplorer::BuildConfiguration*)), + this, SLOT(activeBuildConfigurationChanged())); + } + + if (bc) { + connect(bc, SIGNAL(buildDirectoryChanged()), + this, SLOT(updateDetails())); + connect(bc, SIGNAL(toolChainChanged()), + this, SLOT(updateDetails())); + + connect(bc, SIGNAL(qtVersionChanged()), + this, SLOT(qtVersionChanged())); + } connect(ProjectExplorer::ProjectExplorerPlugin::instance(), SIGNAL(settingsChanged()), this, SLOT(updateMakeOverrideLabel())); @@ -341,6 +354,33 @@ MakeStepConfigWidget::MakeStepConfigWidget(MakeStep *makeStep) this, SLOT(updateDetails())); } +void MakeStepConfigWidget::activeBuildConfigurationChanged() +{ + if (m_bc) { + disconnect(m_bc, SIGNAL(buildDirectoryChanged()), + this, SLOT(updateDetails())); + disconnect(m_bc, SIGNAL(toolChainChanged()), + this, SLOT(updateDetails())); + + disconnect(m_bc, SIGNAL(qtVersionChanged()), + this, SLOT(qtVersionChanged())); + } + + m_bc = m_makeStep->target()->activeBuildConfiguration(); + updateMakeOverrideLabel(); + updateDetails(); + + if (m_bc) { + connect(m_bc, SIGNAL(buildDirectoryChanged()), + this, SLOT(updateDetails())); + connect(m_bc, SIGNAL(toolChainChanged()), + this, SLOT(updateDetails())); + + connect(m_bc, SIGNAL(qtVersionChanged()), + this, SLOT(qtVersionChanged())); + } +} + MakeStepConfigWidget::~MakeStepConfigWidget() { delete m_ui; diff --git a/src/plugins/qt4projectmanager/makestep.h b/src/plugins/qt4projectmanager/makestep.h index 0507d24b6da630d154ea735e04c4329c8847c715..6c010a7d2e0da9e553993ea13c84256496080f26 100644 --- a/src/plugins/qt4projectmanager/makestep.h +++ b/src/plugins/qt4projectmanager/makestep.h @@ -138,10 +138,12 @@ private slots: void updateDetails(); void userArgumentsChanged(); void qtVersionChanged(); + void activeBuildConfigurationChanged(); private: Internal::Ui::MakeStep *m_ui; MakeStep *m_makeStep; QString m_summaryText; + ProjectExplorer::BuildConfiguration *m_bc; bool m_ignoreChange; };