diff --git a/src/plugins/qbsprojectmanager/qbsnodes.cpp b/src/plugins/qbsprojectmanager/qbsnodes.cpp index cd36c351b84..ab0bb7a62a5 100644 --- a/src/plugins/qbsprojectmanager/qbsnodes.cpp +++ b/src/plugins/qbsprojectmanager/qbsnodes.cpp @@ -479,9 +479,14 @@ void QbsGroupNode::setupFolder(ProjectExplorer::FolderNode *root, const qbs::Gro foldersToRemove.append(fn); } + QHash fileTypeHash; + foreach (const qbs::SourceArtifact &sa, group.allSourceArtifacts()) + fileTypeHash[sa.filePath()] = fileType(sa); + foreach (FileTreeNode *c, fileTree->children) { Utils::FileName path = Utils::FileName::fromString(c->path()); - const ProjectExplorer::FileType newFileType = fileType(group, *c); + const ProjectExplorer::FileType newFileType = + fileTypeHash.value(c->path(), ProjectExplorer::UnknownFileType); const bool isQrcFile = newFileType == ProjectExplorer::ResourceType; // Handle files: @@ -541,17 +546,9 @@ void QbsGroupNode::setupFolder(ProjectExplorer::FolderNode *root, const qbs::Gro root->addFileNodes(filesToAdd); } -ProjectExplorer::FileType QbsGroupNode::fileType(const qbs::GroupData &group, - const FileTreeNode &fileNode) +ProjectExplorer::FileType QbsGroupNode::fileType(const qbs::SourceArtifact &artifact) { - if (!group.isValid()) - return ProjectExplorer::UnknownFileType; - const qbs::SourceArtifact artifact = Utils::findOrDefault(group.allSourceArtifacts(), - [&fileNode](const qbs::SourceArtifact &sa) { return sa.filePath() == fileNode.path(); }); - QTC_ASSERT(artifact.isValid() || !fileNode.isFile(), - qDebug() << fileNode.path() << group.name(); return ProjectExplorer::UnknownFileType); - if (!artifact.isValid()) - return ProjectExplorer::UnknownFileType; + QTC_ASSERT(artifact.isValid(), return ProjectExplorer::UnknownFileType); if (artifact.fileTags().contains(QLatin1String("c")) || artifact.fileTags().contains(QLatin1String("cpp")) diff --git a/src/plugins/qbsprojectmanager/qbsnodes.h b/src/plugins/qbsprojectmanager/qbsnodes.h index 35e3fedf276..78f485fe9d9 100644 --- a/src/plugins/qbsprojectmanager/qbsnodes.h +++ b/src/plugins/qbsprojectmanager/qbsnodes.h @@ -108,8 +108,7 @@ public: private: static void setupFolder(ProjectExplorer::FolderNode *folder, const qbs::GroupData &group, const FileTreeNode *subFileTree, const QString &baseDir, bool updateExisting); - static ProjectExplorer::FileType fileType(const qbs::GroupData &group, - const FileTreeNode &fileNode); + static ProjectExplorer::FileType fileType(const qbs::SourceArtifact &artifact); qbs::GroupData m_qbsGroupData; QString m_productPath;