OSDN Git Service

Handle tool chain configuration changes
authorTobias Hunger <tobias.hunger@nokia.com>
Thu, 24 Mar 2011 13:35:03 +0000 (14:35 +0100)
committerTobias Hunger <tobias.hunger@nokia.com>
Thu, 24 Mar 2011 14:45:31 +0000 (15:45 +0100)
Reviewed-by: dt
src/plugins/projectexplorer/buildconfiguration.cpp
src/plugins/projectexplorer/buildconfiguration.h

index 1985918..4f6e604 100644 (file)
@@ -77,6 +77,8 @@ BuildConfiguration::BuildConfiguration(Target *target, const QString &id) :
             this, SLOT(handleToolChainRemovals(ProjectExplorer::ToolChain*)));
     connect(ToolChainManager::instance(), SIGNAL(toolChainAdded(ProjectExplorer::ToolChain*)),
             this, SLOT(handleToolChainAddition(ProjectExplorer::ToolChain*)));
+    connect(ToolChainManager::instance(), SIGNAL(toolChainUpdated(ProjectExplorer::ToolChain*)),
+            this, SLOT(handleToolChainUpdates(ProjectExplorer::ToolChain*)));
 }
 
 BuildConfiguration::BuildConfiguration(Target *target, BuildConfiguration *source) :
@@ -180,6 +182,15 @@ void BuildConfiguration::handleToolChainAddition(ProjectExplorer::ToolChain *tc)
     setToolChain(target()->preferredToolChain(this));
 }
 
+void BuildConfiguration::handleToolChainUpdates(ProjectExplorer::ToolChain *tc)
+{
+    if (tc != m_toolChain)
+        return;
+    QList<ToolChain *> candidates = target()->possibleToolChains(this);
+    if (!candidates.contains(m_toolChain))
+        setToolChain(target()->preferredToolChain(this));
+}
+
 
 Target *BuildConfiguration::target() const
 {
index e3ba32d..9c09964 100644 (file)
@@ -123,6 +123,7 @@ protected:
 private slots:
     void handleToolChainRemovals(ProjectExplorer::ToolChain *tc);
     void handleToolChainAddition(ProjectExplorer::ToolChain *tc);
+    void handleToolChainUpdates(ProjectExplorer::ToolChain*);
 
 private:
     bool m_clearSystemEnvironment;