diff --git a/src/plugins/cmakeprojectmanager/fileapidataextractor.cpp b/src/plugins/cmakeprojectmanager/fileapidataextractor.cpp index e9f6d4351d4..ea156be8a11 100644 --- a/src/plugins/cmakeprojectmanager/fileapidataextractor.cpp +++ b/src/plugins/cmakeprojectmanager/fileapidataextractor.cpp @@ -654,7 +654,6 @@ static void addCompileGroups(ProjectNode *targetRoot, const FilePath &buildDirectory, const TargetDetails &td) { - const bool showSourceFolders = settings().showSourceSubFolders(); const bool inSourceBuild = (sourceDirectory == buildDirectory); QSet alreadyListed; @@ -685,6 +684,9 @@ static void addCompileGroups(ProjectNode *targetRoot, if (isPchFile(buildDirectory, sourcePath) || isUnityFile(buildDirectory, sourcePath)) node->setIsGenerated(true); + const bool showSourceFolders = settings().showSourceSubFolders() + && sourcesOrHeadersFolder(td.sourceGroups[si.sourceGroup]); + // Where does the file node need to go? if (showSourceFolders && sourcePath.isChildOf(buildDirectory) && !inSourceBuild) { buildFileNodes.emplace_back(std::move(node)); @@ -696,6 +698,9 @@ static void addCompileGroups(ProjectNode *targetRoot, } for (size_t i = 0; i < sourceGroupFileNodes.size(); ++i) { + const bool showSourceFolders = settings().showSourceSubFolders() + && sourcesOrHeadersFolder(td.sourceGroups[i]); + std::vector> ¤t = sourceGroupFileNodes[i]; FolderNode *insertNode = td.sourceGroups[i] == "TREE" ? targetRoot diff --git a/src/plugins/cmakeprojectmanager/projecttreehelper.cpp b/src/plugins/cmakeprojectmanager/projecttreehelper.cpp index 7987fdb0c56..d23f6a4f972 100644 --- a/src/plugins/cmakeprojectmanager/projecttreehelper.cpp +++ b/src/plugins/cmakeprojectmanager/projecttreehelper.cpp @@ -18,6 +18,11 @@ using namespace ProjectExplorer; namespace CMakeProjectManager::Internal { +bool sourcesOrHeadersFolder(const QString &displayName) +{ + return displayName == "Source Files" || displayName == "Header Files"; +} + std::unique_ptr createCMakeVFolder(const Utils::FilePath &basePath, int priority, const QString &displayName) @@ -25,8 +30,7 @@ std::unique_ptr createCMakeVFolder(const Utils::FilePath &basePath, auto newFolder = std::make_unique(basePath); newFolder->setPriority(priority); newFolder->setDisplayName(displayName); - newFolder->setIsSourcesOrHeaders(displayName == "Source Files" - || displayName == "Header Files"); + newFolder->setIsSourcesOrHeaders(sourcesOrHeadersFolder(displayName)); return newFolder; } diff --git a/src/plugins/cmakeprojectmanager/projecttreehelper.h b/src/plugins/cmakeprojectmanager/projecttreehelper.h index 5a7ffaa8b25..258e0a63231 100644 --- a/src/plugins/cmakeprojectmanager/projecttreehelper.h +++ b/src/plugins/cmakeprojectmanager/projecttreehelper.h @@ -11,6 +11,8 @@ namespace CMakeProjectManager::Internal { +bool sourcesOrHeadersFolder(const QString &displayName); + std::unique_ptr createCMakeVFolder(const Utils::FilePath &basePath, int priority, const QString &displayName);