QmakeProjectManager: Compress project tree once from the root node

We must not compress a half-built tree, as the relevant conditions might
change later. For example, after setting up the headers node, we might
have a tree src -> headers -> header.h, and compression will lead to
src/headers -> header.h. Now after adding the sources node, we might
have an additional main.cpp under src, which means src and headers
should not have been merged.

Fixes: QTCREATORBUG-29733
Change-Id: I1419a87a0671f43ad65cbe3d108c36cfeba17781
Reviewed-by: hjk <hjk@qt.io>
This commit is contained in:
Christian Kandeler
2023-10-11 13:33:52 +02:00
parent 413fda678f
commit 25b747b00c

View File

@@ -195,7 +195,6 @@ static void createTree(QmakeBuildSystem *buildSystem,
fileNode->setEnabled(fn.second == FileOrigin::ExactParse);
vfolder->addNestedNode(std::move(fileNode));
}
vfolder->forEachFolderNode([](FolderNode *fn) { fn->compress(); });
}
node->addNode(std::move(vfolder));
}
@@ -265,6 +264,7 @@ std::unique_ptr<QmakeProFileNode> QmakeNodeTreeBuilder::buildTree(QmakeBuildSyst
buildSystem->rootProFile());
root->setIcon(iconForProfile(buildSystem->rootProFile()));
createTree(buildSystem, buildSystem->rootProFile(), root.get(), toExclude);
root->compress();
return root;
}