OSDN Git Service

Remove Qt4 runconfigurations again which don't work.
authordt <qtc-committer@nokia.com>
Thu, 10 Jun 2010 12:48:59 +0000 (14:48 +0200)
committerdt <qtc-committer@nokia.com>
Thu, 10 Jun 2010 12:50:21 +0000 (14:50 +0200)
Task-Nr: QTCREATORBUG-1593

src/plugins/qt4projectmanager/qt4project.cpp

index 006352f..ab57f72 100644 (file)
@@ -313,6 +313,7 @@ bool Qt4Project::fromMap(const QVariantMap &map)
     updateFileList();
     // This might be incorrect, need a full update
     updateCodeModel();
+
     createApplicationProjects();
 
     foreach (Target *t, targets())
@@ -998,10 +999,26 @@ void Qt4Project::createApplicationProjects()
                 target->removeRunConfiguration(rc);
         }
 
+        // We use the list twice
+        QList<Qt4ProFileNode *> profiles = applicationProFiles();
+        QStringList paths;
+        foreach (Qt4ProFileNode *pro, profiles)
+            paths << pro->path();
+
+        foreach (RunConfiguration *rc, target->runConfigurations()) {
+            if (Qt4RunConfiguration *qt4rc = qobject_cast<Qt4RunConfiguration *>(rc)) {
+                if (!paths.contains(qt4rc->proFilePath())) {
+                    // A deleted .pro file? or a change template
+                    // We do remove those though
+                    target->removeRunConfiguration(rc);
+                }
+            }
+        }
+
         // Only add new runconfigurations if there are none.
         if (target->runConfigurations().isEmpty()) {
             Qt4Target *qt4Target = static_cast<Qt4Target *>(target);
-            foreach (Qt4ProFileNode *qt4proFile, applicationProFiles()) {
+            foreach (Qt4ProFileNode *qt4proFile, profiles) {
                 qt4Target->addRunConfigurationForPath(qt4proFile->path());
             }
         }