diff options
author | Cristian Adam <cristian.adam@qt.io> | 2021-09-17 18:03:58 +0200 |
---|---|---|
committer | Cristian Adam <cristian.adam@qt.io> | 2021-09-22 10:46:46 +0000 |
commit | 11fd8232b790e8a24070709e046a55b44fbb2fc2 (patch) | |
tree | 83c8dea578386ce22fab9499795bcb22fe01960f | |
parent | 2e1bdabd1f22ea62f14024ac177725d1e4620ae3 (diff) |
CMakePM: Display <File System> tree node only on failure
Fixes: QTCREATORBUG-25994
Fixes: QTCREATORBUG-25974
Change-Id: I383fe5c28d1f71c8f7939bc9fe4f1f0bf1d6a01b
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: Eike Ziller <eike.ziller@qt.io>
(cherry picked from commit 36a0151c6d041a82203c40b4d8b6a800d04e361b)
Reviewed-by: Cristian Adam <cristian.adam@qt.io>
4 files changed, 11 insertions, 18 deletions
diff --git a/src/plugins/cmakeprojectmanager/cmakebuildsystem.cpp b/src/plugins/cmakeprojectmanager/cmakebuildsystem.cpp index e42732c4b5..6988cdb882 100644 --- a/src/plugins/cmakeprojectmanager/cmakebuildsystem.cpp +++ b/src/plugins/cmakeprojectmanager/cmakebuildsystem.cpp @@ -527,11 +527,9 @@ void CMakeBuildSystem::clearCMakeCache() } std::unique_ptr<CMakeProjectNode> CMakeBuildSystem::generateProjectTree( - const TreeScanner::Result &allFiles, bool includeHeaderNodes) + const TreeScanner::Result &allFiles, bool failedToParse) { - QString errorMessage; - auto root = m_reader.generateProjectTree(allFiles, errorMessage, includeHeaderNodes); - checkAndReportError(errorMessage); + auto root = m_reader.generateProjectTree(allFiles, failedToParse); return root; } @@ -604,7 +602,7 @@ void CMakeBuildSystem::updateProjectData() Project *p = project(); { - auto newRoot = generateProjectTree(m_allFiles, true); + auto newRoot = generateProjectTree(m_allFiles, false); if (newRoot) { setRootProjectNode(std::move(newRoot)); @@ -703,7 +701,7 @@ void CMakeBuildSystem::updateFallbackProjectData() QTC_ASSERT(m_treeScanner.isFinished() && !m_reader.isParsing(), return ); - auto newRoot = generateProjectTree(m_allFiles, false); + auto newRoot = generateProjectTree(m_allFiles, true); setRootProjectNode(std::move(newRoot)); qCDebug(cmakeBuildSystemLog) << "All fallback CMake project data up to date."; diff --git a/src/plugins/cmakeprojectmanager/cmakebuildsystem.h b/src/plugins/cmakeprojectmanager/cmakebuildsystem.h index 95d31367d8..c722ee172f 100644 --- a/src/plugins/cmakeprojectmanager/cmakebuildsystem.h +++ b/src/plugins/cmakeprojectmanager/cmakebuildsystem.h @@ -133,7 +133,7 @@ private: void combineScanAndParse(); std::unique_ptr<CMakeProjectNode> generateProjectTree( - const ProjectExplorer::TreeScanner::Result &allFiles, bool includeHeadersNode); + const ProjectExplorer::TreeScanner::Result &allFiles, bool failedToParse); void checkAndReportError(QString &errorMessage); void updateCMakeConfiguration(QString &errorMessage); diff --git a/src/plugins/cmakeprojectmanager/fileapireader.cpp b/src/plugins/cmakeprojectmanager/fileapireader.cpp index 09aa375bd2..b7da82f568 100644 --- a/src/plugins/cmakeprojectmanager/fileapireader.cpp +++ b/src/plugins/cmakeprojectmanager/fileapireader.cpp @@ -217,16 +217,13 @@ bool FileApiReader::usesAllCapsTargets() const } std::unique_ptr<CMakeProjectNode> FileApiReader::generateProjectTree( - const ProjectExplorer::TreeScanner::Result &allFiles, - QString &errorMessage, - bool includeHeaderNodes) + const ProjectExplorer::TreeScanner::Result &allFiles, bool failedToParse) { - Q_UNUSED(errorMessage) - - if (includeHeaderNodes) { + if (failedToParse) + addFileSystemNodes(m_rootProjectNode.get(), allFiles.folderNode); + else addHeaderNodes(m_rootProjectNode.get(), m_knownHeaders, allFiles.allFiles); - } - addFileSystemNodes(m_rootProjectNode.get(), allFiles.folderNode); + return std::exchange(m_rootProjectNode, {}); } diff --git a/src/plugins/cmakeprojectmanager/fileapireader.h b/src/plugins/cmakeprojectmanager/fileapireader.h index 4e44796699..30cdae4267 100644 --- a/src/plugins/cmakeprojectmanager/fileapireader.h +++ b/src/plugins/cmakeprojectmanager/fileapireader.h @@ -72,9 +72,7 @@ public: CMakeConfig takeParsedConfiguration(QString &errorMessage); QString ctestPath() const; std::unique_ptr<CMakeProjectNode> generateProjectTree( - const ProjectExplorer::TreeScanner::Result &allFiles, - QString &errorMessage, - bool includeHeaderNodes); + const ProjectExplorer::TreeScanner::Result &allFiles, bool failedToParse); ProjectExplorer::RawProjectParts createRawProjectParts(QString &errorMessage); bool isMultiConfig() const; |