From 9c18e718a795200557e8cb9c17c23a5ac4a3d28c Mon Sep 17 00:00:00 2001 From: hjk Date: Fri, 24 Mar 2017 12:58:16 +0100 Subject: ProjectExplorer: Merge the two loops in FlatModel::addFolderNode And inline the filtering to avoid the duplicated type check and save a few cycles. Change-Id: I0dae5e51b05b0a4e581359e7ad7d3b9d4f684141 Reviewed-by: Tobias Hunger --- src/plugins/projectexplorer/projectmodels.cpp | 24 +++++------------------- 1 file changed, 5 insertions(+), 19 deletions(-) (limited to 'src/plugins/projectexplorer/projectmodels.cpp') diff --git a/src/plugins/projectexplorer/projectmodels.cpp b/src/plugins/projectexplorer/projectmodels.cpp index 4f4e69f180..a8139f686a 100644 --- a/src/plugins/projectexplorer/projectmodels.cpp +++ b/src/plugins/projectexplorer/projectmodels.cpp @@ -266,7 +266,8 @@ void FlatModel::addFolderNode(WrapperNode *parent, FolderNode *folderNode, QSet< { for (Node *node : folderNode->nodes()) { if (FolderNode *subFolderNode = node->asFolderNode()) { - if (!filter(subFolderNode) && !seen->contains(subFolderNode)) { + const bool isHidden = m_filterProjects && !subFolderNode->showInSimpleTree(); + if (!isHidden && !seen->contains(subFolderNode)) { seen->insert(subFolderNode); auto node = new WrapperNode(subFolderNode); parent->appendChild(node); @@ -275,11 +276,9 @@ void FlatModel::addFolderNode(WrapperNode *parent, FolderNode *folderNode, QSet< } else { addFolderNode(parent, subFolderNode, seen); } - } - } - for (Node *node : folderNode->nodes()) { - if (FileNode *fileNode = node->asFileNode()) { - if (!filter(fileNode) && !seen->contains(fileNode)) { + } else if (FileNode *fileNode = node->asFileNode()) { + const bool isHidden = m_filterProjects && fileNode->isGenerated(); + if (!isHidden && !seen->contains(fileNode)) { seen->insert(fileNode); parent->appendChild(new WrapperNode(fileNode)); } @@ -353,19 +352,6 @@ Node *FlatModel::nodeForIndex(const QModelIndex &index) const return flatNode ? flatNode->m_node : nullptr; } -bool FlatModel::filter(Node *node) const -{ - bool isHidden = false; - if (FolderNode *folderNode = node->asFolderNode()) { - if (m_filterProjects) - isHidden = !folderNode->showInSimpleTree(); - } else if (FileNode *fileNode = node->asFileNode()) { - if (m_filterGeneratedFiles) - isHidden = fileNode->isGenerated(); - } - return isHidden; -} - const QLoggingCategory &FlatModel::logger() { static QLoggingCategory logger("qtc.projectexplorer.flatmodel"); -- cgit v1.2.1