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: