ProjectNodes: Be less enthusiastic about compression opportunities

Do not compress foldernodes that differ on their type. This makes it
possible to use FolderNode::compress() in one more place in CMake.

Change-Id: I4721d5d12e3032ee70a1c3d9e87df49d59751f04
Reviewed-by: hjk <hjk@qt.io>
This commit is contained in:
Tobias Hunger
2017-03-24 16:34:03 +01:00
parent b302eb2d0f
commit e8498acde0
2 changed files with 3 additions and 0 deletions

View File

@@ -538,6 +538,7 @@ void ServerModeReader::addCMakeLists(CMakeProjectNode *root, const QList<FileNod
[&cmakeDirs](const Utils::FileName &fp) -> ProjectExplorer::FolderNode * {
return cmakeDirs.contains(fp) ? new CMakeListsNode(fp) : new FolderNode(fp);
});
root->compress();
}
static ProjectNode *findCMakeNode(ProjectNode *root, const Utils::FileName &dir)

View File

@@ -520,6 +520,8 @@ void FolderNode::compress()
{
QList<Node *> children = nodes();
if (auto subFolder = children.count() == 1 ? children.at(0)->asFolderNode() : nullptr) {
if (subFolder->nodeType() != nodeType())
return;
// Only one subfolder: Compress!
setDisplayName(QDir::toNativeSeparators(displayName() + "/" + subFolder->displayName()));
for (Node *n : subFolder->nodes()) {