From a63998f55b28575818faabd1a16d0c40b0433c23 Mon Sep 17 00:00:00 2001 From: hjk <hjk@qt.io> Date: Fri, 24 Mar 2017 11:52:45 +0100 Subject: [PATCH] ProjectExplorer: Avoid some needless intermediate lists ... when creating folder nodes in the flat model. Change-Id: I28f95589d774fc83e1a30c8328707bd1db6be03e Reviewed-by: Tobias Hunger <tobias.hunger@qt.io> (cherry picked from commit 1a416d3f982d1fc574c578fdd6bafce51714f8a3) Reviewed-by: Eike Ziller <eike.ziller@qt.io> --- src/plugins/projectexplorer/projectmodels.cpp | 32 ++++++++++--------- 1 file changed, 17 insertions(+), 15 deletions(-) diff --git a/src/plugins/projectexplorer/projectmodels.cpp b/src/plugins/projectexplorer/projectmodels.cpp index b8e925230f..4f4e69f180 100644 --- a/src/plugins/projectexplorer/projectmodels.cpp +++ b/src/plugins/projectexplorer/projectmodels.cpp @@ -264,23 +264,25 @@ void FlatModel::saveExpandData() void FlatModel::addFolderNode(WrapperNode *parent, FolderNode *folderNode, QSet<Node *> *seen) { - const QList<FolderNode *> subFolderNodes = folderNode->folderNodes(); - for (FolderNode *subFolderNode : subFolderNodes) { - if (!filter(subFolderNode) && !seen->contains(subFolderNode)) { - seen->insert(subFolderNode); - auto node = new WrapperNode(subFolderNode); - parent->appendChild(node); - addFolderNode(node, subFolderNode, seen); - node->sortChildren(&sortWrapperNodes); - } else { - addFolderNode(parent, subFolderNode, seen); + for (Node *node : folderNode->nodes()) { + if (FolderNode *subFolderNode = node->asFolderNode()) { + if (!filter(subFolderNode) && !seen->contains(subFolderNode)) { + seen->insert(subFolderNode); + auto node = new WrapperNode(subFolderNode); + parent->appendChild(node); + addFolderNode(node, subFolderNode, seen); + node->sortChildren(&sortWrapperNodes); + } else { + addFolderNode(parent, subFolderNode, seen); + } } } - const QList<FileNode *> fileNodes = folderNode->fileNodes(); - for (FileNode *fileNode : fileNodes) { - if (!filter(fileNode) && !seen->contains(fileNode)) { - seen->insert(fileNode); - parent->appendChild(new WrapperNode(fileNode)); + for (Node *node : folderNode->nodes()) { + if (FileNode *fileNode = node->asFileNode()) { + if (!filter(fileNode) && !seen->contains(fileNode)) { + seen->insert(fileNode); + parent->appendChild(new WrapperNode(fileNode)); + } } } } -- GitLab