diff --git a/src/plugins/qt4projectmanager/qt4project.cpp b/src/plugins/qt4projectmanager/qt4project.cpp index 006352f4a01f9fdd4fa4eedbf301d9f4951fedc2..ab57f72f5937f07dd4817f95f45f889abe3b446c 100644 --- a/src/plugins/qt4projectmanager/qt4project.cpp +++ b/src/plugins/qt4projectmanager/qt4project.cpp @@ -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()); } }