diff --git a/src/plugins/qt4projectmanager/qt4buildconfiguration.cpp b/src/plugins/qt4projectmanager/qt4buildconfiguration.cpp index f4699251d22cb7382db60335096679abe3dc446d..7be33a0a0d4d222898eed805c1d013fb17f861ae 100644 --- a/src/plugins/qt4projectmanager/qt4buildconfiguration.cpp +++ b/src/plugins/qt4projectmanager/qt4buildconfiguration.cpp @@ -189,7 +189,7 @@ void Qt4BuildConfiguration::ctor() connect(this, SIGNAL(environmentChanged()), this, SLOT(emitProFileEvaluateNeeded())); connect(qt4Target()->qt4Project(), SIGNAL(proFileUpdated(Qt4ProjectManager::Qt4ProFileNode*,bool,bool)), - this, SLOT(proFileUpdated())); + this, SLOT(proFileUpdated(Qt4ProjectManager::Qt4ProFileNode*,bool,bool))); QtSupport::QtVersionManager *vm = QtSupport::QtVersionManager::instance(); connect(vm, SIGNAL(qtVersionsChanged(QList<int>)), @@ -204,10 +204,12 @@ void Qt4BuildConfiguration::emitBuildDirectoryChanged() } } -void Qt4BuildConfiguration::proFileUpdated() +void Qt4BuildConfiguration::proFileUpdated(Qt4ProjectManager::Qt4ProFileNode *, bool success, bool parseInProgress) { // Changing the included Qt modules from 0 to at least one might have caused the // tool chain to become invalid. + if (!success || parseInProgress) + return; if (!qt4Target()->possibleToolChains(this).contains(toolChain())) setToolChain(qt4Target()->preferredToolChain(this)); } diff --git a/src/plugins/qt4projectmanager/qt4buildconfiguration.h b/src/plugins/qt4projectmanager/qt4buildconfiguration.h index 7631325c10b46d928d4f3f5fce570a0eb3e762d4..76cb1175d5aa813d25f383821eb142f49b72a257 100644 --- a/src/plugins/qt4projectmanager/qt4buildconfiguration.h +++ b/src/plugins/qt4projectmanager/qt4buildconfiguration.h @@ -146,7 +146,7 @@ signals: private slots: void qtVersionsChanged(const QList<int> &changedVersions); void emitBuildDirectoryChanged(); - void proFileUpdated(); + void proFileUpdated(Qt4ProjectManager::Qt4ProFileNode *, bool, bool parseInProgress); protected: Qt4BuildConfiguration(Qt4BaseTarget *target, Qt4BuildConfiguration *source); diff --git a/src/plugins/qt4projectmanager/qt4nodes.cpp b/src/plugins/qt4projectmanager/qt4nodes.cpp index 1819417d90782c298b77d7344aa919e2f9a5c54a..d6daf3e4a3e0b604f88d3b2d5ccb1c13463e5a45 100644 --- a/src/plugins/qt4projectmanager/qt4nodes.cpp +++ b/src/plugins/qt4projectmanager/qt4nodes.cpp @@ -1598,6 +1598,7 @@ void Qt4ProFileNode::applyEvaluate(EvalResult evalResult, bool async) if (!m_readerExact) return; if (evalResult == EvalFail || m_project->wasEvaluateCanceled()) { + m_validParse = false; m_project->destroyProFileReader(m_readerExact); m_project->destroyProFileReader(m_readerCumulative); m_readerExact = m_readerCumulative = 0; diff --git a/src/plugins/qt4projectmanager/qt4projectconfigwidget.cpp b/src/plugins/qt4projectmanager/qt4projectconfigwidget.cpp index 68be86bb38e08edd9348fc48e4f64c419fca62f3..c9a0f417f55c5b18c897a7f0377dc3b64ef8c59b 100644 --- a/src/plugins/qt4projectmanager/qt4projectconfigwidget.cpp +++ b/src/plugins/qt4projectmanager/qt4projectconfigwidget.cpp @@ -123,7 +123,7 @@ Qt4ProjectConfigWidget::Qt4ProjectConfigWidget(Qt4BaseTarget *target) this, SLOT(updateImportLabel())); connect(target->qt4Project(), SIGNAL(proFileUpdated(Qt4ProjectManager::Qt4ProFileNode*,bool,bool)), - this, SLOT(updateToolChainCombo())); + this, SLOT(proFileUpdated(Qt4ProjectManager::Qt4ProFileNode*,bool,bool))); connect(ProjectExplorer::ToolChainManager::instance(), SIGNAL(toolChainsChanged()), this, SLOT(updateToolChainCombo())); @@ -539,6 +539,13 @@ void Qt4ProjectConfigWidget::toolChainChanged() } } +void Qt4ProjectConfigWidget::proFileUpdated(Qt4ProjectManager::Qt4ProFileNode *node, bool success, bool parseInProgress) +{ + if (!success || parseInProgress) + return; + updateToolChainCombo(); +} + void Qt4ProjectConfigWidget::updateToolChainCombo() { m_ui->toolChainComboBox->clear(); diff --git a/src/plugins/qt4projectmanager/qt4projectconfigwidget.h b/src/plugins/qt4projectmanager/qt4projectconfigwidget.h index dd11b2e778f0ac17c438f6fb70adf1d82f662296..890a324b6c48c1a051a24b8b3eaabb11c18c13e9 100644 --- a/src/plugins/qt4projectmanager/qt4projectconfigwidget.h +++ b/src/plugins/qt4projectmanager/qt4projectconfigwidget.h @@ -46,6 +46,7 @@ namespace Utils { namespace Qt4ProjectManager { class Qt4BaseTarget; class Qt4BuildConfiguration; +class Qt4ProFileNode; namespace Internal { namespace Ui { @@ -80,6 +81,7 @@ private slots: void toolChainChanged(); void updateImportLabel(); void environmentChanged(); + void proFileUpdated(Qt4ProjectManager::Qt4ProFileNode*,bool,bool); void updateToolChainCombo(); private: