From 000a2b8861588b2d65178ac643e9a0140924685e Mon Sep 17 00:00:00 2001
From: Daniel Teske <daniel.teske@nokia.com>
Date: Thu, 26 Jan 2012 15:15:03 +0100
Subject: [PATCH] Don't remove unconfigured custom executables on async parses

Only do that on loading the project.

Change-Id: Ibe5ef1188e30d0743a3d10caeb4a98ac5f5ee95d
Reviewed-by: Tobias Hunger <tobias.hunger@nokia.com>
---
 src/plugins/madde/qt4maemotarget.cpp                         | 5 +++--
 src/plugins/madde/qt4maemotarget.h                           | 2 +-
 src/plugins/madde/qt4maemotargetfactory.cpp                  | 2 +-
 .../qt4projectmanager/qt-desktop/qt4desktoptarget.cpp        | 5 +++--
 src/plugins/qt4projectmanager/qt-desktop/qt4desktoptarget.h  | 2 +-
 .../qt4projectmanager/qt-desktop/qt4desktoptargetfactory.cpp | 2 +-
 .../qt4projectmanager/qt-desktop/qt4simulatortarget.cpp      | 5 +++--
 .../qt4projectmanager/qt-desktop/qt4simulatortarget.h        | 2 +-
 .../qt-desktop/qt4simulatortargetfactory.cpp                 | 2 +-
 src/plugins/qt4projectmanager/qt-s60/qt4symbiantarget.cpp    | 5 +++--
 src/plugins/qt4projectmanager/qt-s60/qt4symbiantarget.h      | 2 +-
 .../qt4projectmanager/qt-s60/qt4symbiantargetfactory.cpp     | 2 +-
 src/plugins/qt4projectmanager/qt4project.cpp                 | 4 ++--
 src/plugins/qt4projectmanager/qt4target.h                    | 2 +-
 src/plugins/remotelinux/embeddedlinuxtarget.cpp              | 5 +++--
 src/plugins/remotelinux/embeddedlinuxtarget.h                | 2 +-
 src/plugins/remotelinux/embeddedlinuxtargetfactory.cpp       | 2 +-
 17 files changed, 28 insertions(+), 23 deletions(-)

diff --git a/src/plugins/madde/qt4maemotarget.cpp b/src/plugins/madde/qt4maemotarget.cpp
index 0a86e5a08c6..d4c35c5d857 100644
--- a/src/plugins/madde/qt4maemotarget.cpp
+++ b/src/plugins/madde/qt4maemotarget.cpp
@@ -160,9 +160,10 @@ ProjectExplorer::IBuildConfigurationFactory *AbstractQt4MaemoTarget::buildConfig
     return m_buildConfigurationFactory;
 }
 
-void AbstractQt4MaemoTarget::createApplicationProFiles()
+void AbstractQt4MaemoTarget::createApplicationProFiles(bool reparse)
 {
-    removeUnconfiguredCustomExectutableRunConfigurations();
+    if (!reparse)
+        removeUnconfiguredCustomExectutableRunConfigurations();
 
     QList<Qt4ProFileNode *> profiles = qt4Project()->applicationProFiles();
     QSet<QString> paths;
diff --git a/src/plugins/madde/qt4maemotarget.h b/src/plugins/madde/qt4maemotarget.h
index d53f07c067d..99a380b9680 100644
--- a/src/plugins/madde/qt4maemotarget.h
+++ b/src/plugins/madde/qt4maemotarget.h
@@ -63,7 +63,7 @@ public:
     virtual ~AbstractQt4MaemoTarget();
 
     ProjectExplorer::IBuildConfigurationFactory *buildConfigurationFactory() const;
-    void createApplicationProFiles();
+    void createApplicationProFiles(bool reparse);
     QList<ProjectExplorer::RunConfiguration *> runConfigurationsForNode(ProjectExplorer::Node *n);
     QList<ProjectExplorer::ToolChain *> possibleToolChains(ProjectExplorer::BuildConfiguration *bc) const;
 
diff --git a/src/plugins/madde/qt4maemotargetfactory.cpp b/src/plugins/madde/qt4maemotargetfactory.cpp
index e2eb6b1d681..c44b082a79f 100644
--- a/src/plugins/madde/qt4maemotargetfactory.cpp
+++ b/src/plugins/madde/qt4maemotargetfactory.cpp
@@ -216,7 +216,7 @@ ProjectExplorer::Target *Qt4MaemoTargetFactory::create(ProjectExplorer::Project
     foreach (const QString &deployConfigId, deployConfigIds) {
         target->addDeployConfiguration(target->createDeployConfiguration(deployConfigId));
     }
-    target->createApplicationProFiles();
+    target->createApplicationProFiles(false);
     if (target->runConfigurations().isEmpty())
         target->addRunConfiguration(new ProjectExplorer::CustomExecutableRunConfiguration(target));
     return target;
diff --git a/src/plugins/qt4projectmanager/qt-desktop/qt4desktoptarget.cpp b/src/plugins/qt4projectmanager/qt-desktop/qt4desktoptarget.cpp
index 5ec565e5321..1aca809649a 100644
--- a/src/plugins/qt4projectmanager/qt-desktop/qt4desktoptarget.cpp
+++ b/src/plugins/qt4projectmanager/qt-desktop/qt4desktoptarget.cpp
@@ -65,9 +65,10 @@ ProjectExplorer::IBuildConfigurationFactory *Qt4DesktopTarget::buildConfiguratio
     return m_buildConfigurationFactory;
 }
 
-void Qt4DesktopTarget::createApplicationProFiles()
+void Qt4DesktopTarget::createApplicationProFiles(bool reparse)
 {
-    removeUnconfiguredCustomExectutableRunConfigurations();
+    if (!reparse)
+        removeUnconfiguredCustomExectutableRunConfigurations();
 
     // We use the list twice
     QList<Qt4ProFileNode *> profiles = qt4Project()->applicationProFiles();
diff --git a/src/plugins/qt4projectmanager/qt-desktop/qt4desktoptarget.h b/src/plugins/qt4projectmanager/qt-desktop/qt4desktoptarget.h
index 34f42634d26..c8966eccafb 100644
--- a/src/plugins/qt4projectmanager/qt-desktop/qt4desktoptarget.h
+++ b/src/plugins/qt4projectmanager/qt-desktop/qt4desktoptarget.h
@@ -52,7 +52,7 @@ public:
 
     ProjectExplorer::IBuildConfigurationFactory *buildConfigurationFactory() const;
 
-    void createApplicationProFiles();
+    void createApplicationProFiles(bool reparse);
     QList<ProjectExplorer::RunConfiguration *> runConfigurationsForNode(ProjectExplorer::Node *n);
 
     static QString defaultDisplayName();
diff --git a/src/plugins/qt4projectmanager/qt-desktop/qt4desktoptargetfactory.cpp b/src/plugins/qt4projectmanager/qt-desktop/qt4desktoptargetfactory.cpp
index 952d32b7e2e..d5428706cbf 100644
--- a/src/plugins/qt4projectmanager/qt-desktop/qt4desktoptargetfactory.cpp
+++ b/src/plugins/qt4projectmanager/qt-desktop/qt4desktoptargetfactory.cpp
@@ -185,7 +185,7 @@ ProjectExplorer::Target *Qt4DesktopTargetFactory::create(ProjectExplorer::Projec
 
     t->addDeployConfiguration(t->createDeployConfiguration(QLatin1String(ProjectExplorer::Constants::DEFAULT_DEPLOYCONFIGURATION_ID)));
 
-    t->createApplicationProFiles();
+    t->createApplicationProFiles(false);
 
     if (t->runConfigurations().isEmpty())
         t->addRunConfiguration(new ProjectExplorer::CustomExecutableRunConfiguration(t));
diff --git a/src/plugins/qt4projectmanager/qt-desktop/qt4simulatortarget.cpp b/src/plugins/qt4projectmanager/qt-desktop/qt4simulatortarget.cpp
index 782bf3665ad..38543a5583c 100644
--- a/src/plugins/qt4projectmanager/qt-desktop/qt4simulatortarget.cpp
+++ b/src/plugins/qt4projectmanager/qt-desktop/qt4simulatortarget.cpp
@@ -70,9 +70,10 @@ ProjectExplorer::IBuildConfigurationFactory *Qt4SimulatorTarget::buildConfigurat
     return m_buildConfigurationFactory;
 }
 
-void Qt4SimulatorTarget::createApplicationProFiles()
+void Qt4SimulatorTarget::createApplicationProFiles(bool reparse)
 {
-    removeUnconfiguredCustomExectutableRunConfigurations();
+    if (!reparse)
+        removeUnconfiguredCustomExectutableRunConfigurations();
 
     // We use the list twice
     QList<Qt4ProFileNode *> profiles = qt4Project()->applicationProFiles();
diff --git a/src/plugins/qt4projectmanager/qt-desktop/qt4simulatortarget.h b/src/plugins/qt4projectmanager/qt-desktop/qt4simulatortarget.h
index afd9be5e79e..da25739ea16 100644
--- a/src/plugins/qt4projectmanager/qt-desktop/qt4simulatortarget.h
+++ b/src/plugins/qt4projectmanager/qt-desktop/qt4simulatortarget.h
@@ -52,7 +52,7 @@ public:
 
     ProjectExplorer::IBuildConfigurationFactory *buildConfigurationFactory() const;
 
-    void createApplicationProFiles();
+    void createApplicationProFiles(bool reparse);
     QList<ProjectExplorer::RunConfiguration *> runConfigurationsForNode(ProjectExplorer::Node *n);
 
     static QString defaultDisplayName();
diff --git a/src/plugins/qt4projectmanager/qt-desktop/qt4simulatortargetfactory.cpp b/src/plugins/qt4projectmanager/qt-desktop/qt4simulatortargetfactory.cpp
index aaa2b8cb8e7..79059cc9c0b 100644
--- a/src/plugins/qt4projectmanager/qt-desktop/qt4simulatortargetfactory.cpp
+++ b/src/plugins/qt4projectmanager/qt-desktop/qt4simulatortargetfactory.cpp
@@ -166,7 +166,7 @@ ProjectExplorer::Target *Qt4SimulatorTargetFactory::create(ProjectExplorer::Proj
 
     t->addDeployConfiguration(t->createDeployConfiguration(QLatin1String(ProjectExplorer::Constants::DEFAULT_DEPLOYCONFIGURATION_ID)));
 
-    t->createApplicationProFiles();
+    t->createApplicationProFiles(false);
 
     if (t->runConfigurations().isEmpty())
         t->addRunConfiguration(new ProjectExplorer::CustomExecutableRunConfiguration(t));
diff --git a/src/plugins/qt4projectmanager/qt-s60/qt4symbiantarget.cpp b/src/plugins/qt4projectmanager/qt-s60/qt4symbiantarget.cpp
index cc5774ca47c..5de15118a63 100644
--- a/src/plugins/qt4projectmanager/qt-s60/qt4symbiantarget.cpp
+++ b/src/plugins/qt4projectmanager/qt-s60/qt4symbiantarget.cpp
@@ -115,9 +115,10 @@ QList<ProjectExplorer::ToolChain *> Qt4SymbianTarget::possibleToolChains(Project
     return tmp;
 }
 
-void Qt4SymbianTarget::createApplicationProFiles()
+void Qt4SymbianTarget::createApplicationProFiles(bool reparse)
 {
-    removeUnconfiguredCustomExectutableRunConfigurations();
+    if (!reparse)
+        removeUnconfiguredCustomExectutableRunConfigurations();
 
     // We use the list twice
     QList<Qt4ProFileNode *> profiles = qt4Project()->applicationProFiles();
diff --git a/src/plugins/qt4projectmanager/qt-s60/qt4symbiantarget.h b/src/plugins/qt4projectmanager/qt-s60/qt4symbiantarget.h
index 37f919fb73f..89f95a3ff94 100644
--- a/src/plugins/qt4projectmanager/qt-s60/qt4symbiantarget.h
+++ b/src/plugins/qt4projectmanager/qt-s60/qt4symbiantarget.h
@@ -55,7 +55,7 @@ public:
 
     QList<ProjectExplorer::ToolChain *> possibleToolChains(ProjectExplorer::BuildConfiguration *bc) const;
 
-    void createApplicationProFiles();
+    void createApplicationProFiles(bool reparse);
     virtual QList<ProjectExplorer::RunConfiguration *> runConfigurationsForNode(ProjectExplorer::Node *n);
 
     static QString defaultDisplayName(const QString &id);
diff --git a/src/plugins/qt4projectmanager/qt-s60/qt4symbiantargetfactory.cpp b/src/plugins/qt4projectmanager/qt-s60/qt4symbiantargetfactory.cpp
index 1d63cec578d..c99b2a0de1d 100644
--- a/src/plugins/qt4projectmanager/qt-s60/qt4symbiantargetfactory.cpp
+++ b/src/plugins/qt4projectmanager/qt-s60/qt4symbiantargetfactory.cpp
@@ -233,7 +233,7 @@ ProjectExplorer::Target *Qt4SymbianTargetFactory::create(ProjectExplorer::Projec
 
     t->addDeployConfiguration(t->createDeployConfiguration(QLatin1String(S60_DEPLOYCONFIGURATION_ID)));
 
-    t->createApplicationProFiles();
+    t->createApplicationProFiles(false);
 
     if (t->runConfigurations().isEmpty())
         t->addRunConfiguration(new ProjectExplorer::CustomExecutableRunConfiguration(t));
diff --git a/src/plugins/qt4projectmanager/qt4project.cpp b/src/plugins/qt4projectmanager/qt4project.cpp
index 119c60c186b..a8d021570cc 100644
--- a/src/plugins/qt4projectmanager/qt4project.cpp
+++ b/src/plugins/qt4projectmanager/qt4project.cpp
@@ -404,7 +404,7 @@ bool Qt4Project::fromMap(const QVariantMap &map)
     updateCodeModels();
 
     foreach (Target *t, targets())
-        static_cast<Qt4BaseTarget *>(t)->createApplicationProFiles();
+        static_cast<Qt4BaseTarget *>(t)->createApplicationProFiles(false);
 
     foreach (Target *t, targets())
         onAddedTarget(t);
@@ -818,7 +818,7 @@ void Qt4Project::decrementPendingEvaluateFutures()
             m_asyncUpdateState = Base;
             activeTarget()->activeQt4BuildConfiguration()->setEnabled(true);
             foreach (Target *t, targets())
-                static_cast<Qt4BaseTarget *>(t)->createApplicationProFiles();
+                static_cast<Qt4BaseTarget *>(t)->createApplicationProFiles(true);
             updateFileList();
             updateCodeModels();
             emit proParsingDone();
diff --git a/src/plugins/qt4projectmanager/qt4target.h b/src/plugins/qt4projectmanager/qt4target.h
index fefbb48b324..2f5799cc8b5 100644
--- a/src/plugins/qt4projectmanager/qt4target.h
+++ b/src/plugins/qt4projectmanager/qt4target.h
@@ -87,7 +87,7 @@ public:
                                                     QString directory,
                                                     bool importing);
 
-    virtual void createApplicationProFiles() = 0;
+    virtual void createApplicationProFiles(bool reparse) = 0;
 
     virtual QList<ProjectExplorer::RunConfiguration *> runConfigurationsForNode(ProjectExplorer::Node *n) = 0;
 
diff --git a/src/plugins/remotelinux/embeddedlinuxtarget.cpp b/src/plugins/remotelinux/embeddedlinuxtarget.cpp
index 9d9d2c203f9..307de153ddd 100644
--- a/src/plugins/remotelinux/embeddedlinuxtarget.cpp
+++ b/src/plugins/remotelinux/embeddedlinuxtarget.cpp
@@ -81,9 +81,10 @@ Utils::FileName EmbeddedLinuxTarget::mkspec(const Qt4ProjectManager::Qt4BuildCon
    return version->mkspec();
 }
 
-void EmbeddedLinuxTarget::createApplicationProFiles()
+void EmbeddedLinuxTarget::createApplicationProFiles(bool reparse)
 {
-    removeUnconfiguredCustomExectutableRunConfigurations();
+    if (!reparse)
+        removeUnconfiguredCustomExectutableRunConfigurations();
 
     // We use the list twice
     QList<Qt4ProjectManager::Qt4ProFileNode *> profiles = qt4Project()->applicationProFiles();
diff --git a/src/plugins/remotelinux/embeddedlinuxtarget.h b/src/plugins/remotelinux/embeddedlinuxtarget.h
index 30ba63f3123..fbcc14a87fd 100644
--- a/src/plugins/remotelinux/embeddedlinuxtarget.h
+++ b/src/plugins/remotelinux/embeddedlinuxtarget.h
@@ -51,7 +51,7 @@ public:
 
     ProjectExplorer::IBuildConfigurationFactory *buildConfigurationFactory() const;
 
-    void createApplicationProFiles();
+    void createApplicationProFiles(bool reparse);
 
     QList<ProjectExplorer::RunConfiguration *> runConfigurationsForNode(ProjectExplorer::Node *n);
 
diff --git a/src/plugins/remotelinux/embeddedlinuxtargetfactory.cpp b/src/plugins/remotelinux/embeddedlinuxtargetfactory.cpp
index 068922232d9..6ee27cbe13c 100644
--- a/src/plugins/remotelinux/embeddedlinuxtargetfactory.cpp
+++ b/src/plugins/remotelinux/embeddedlinuxtargetfactory.cpp
@@ -165,7 +165,7 @@ ProjectExplorer::Target *EmbeddedLinuxTargetFactory::create(ProjectExplorer::Pro
                 t->createDeployConfiguration(
                     RemoteLinuxDeployConfigurationFactory::genericDeployConfigurationId()));
 
-    t->createApplicationProFiles();
+    t->createApplicationProFiles(false);
 
     if (t->runConfigurations().isEmpty())
         t->addRunConfiguration(new ProjectExplorer::CustomExecutableRunConfiguration(t));
-- 
GitLab