diff options
author | hjk <hjk@qt.io> | 2017-03-06 18:03:43 +0100 |
---|---|---|
committer | hjk <hjk@qt.io> | 2017-03-08 09:05:29 +0000 |
commit | d6df4492d01e06a3507ad854db6d4ba10a47d8af (patch) | |
tree | b2e48ff234bc4a49b01f5c95cb00789a878edb62 /src/plugins/projectexplorer/projecttreewidget.cpp | |
parent | 05e8f34d3eb22030b10190397cdc1e1e080d6267 (diff) |
ProjectExplorer: Use visitor-by-lambda for project tree
And inline it into user code. Less code in total and no intermediate
node lists.
Change-Id: I3724883408bfaa868266110aee27bbffd4d96bd8
Reviewed-by: Tim Jenssen <tim.jenssen@qt.io>
Diffstat (limited to 'src/plugins/projectexplorer/projecttreewidget.cpp')
-rw-r--r-- | src/plugins/projectexplorer/projecttreewidget.cpp | 32 |
1 files changed, 15 insertions, 17 deletions
diff --git a/src/plugins/projectexplorer/projecttreewidget.cpp b/src/plugins/projectexplorer/projecttreewidget.cpp index cb43b8398e..c7a2356c72 100644 --- a/src/plugins/projectexplorer/projecttreewidget.cpp +++ b/src/plugins/projectexplorer/projecttreewidget.cpp @@ -272,29 +272,27 @@ void ProjectTreeWidget::rowsInserted(const QModelIndex &parent, int start, int e Node *ProjectTreeWidget::nodeForFile(const Utils::FileName &fileName) { - return mostExpandedNode(SessionManager::nodesForFile(fileName)); -} - -Node *ProjectTreeWidget::mostExpandedNode(const QList<Node *> &nodes) -{ - Node *bestNode = 0; + Node *bestNode = nullptr; int bestNodeExpandCount = INT_MAX; - foreach (Node *node, nodes) { - if (!bestNode) { - bestNode = node; - bestNodeExpandCount = ProjectTreeWidget::expandedCount(node); - } else if (node->nodeType() < bestNode->nodeType()) { - bestNode = node; - bestNodeExpandCount = ProjectTreeWidget::expandedCount(node); - } else if (node->nodeType() == bestNode->nodeType()) { - int nodeExpandCount = ProjectTreeWidget::expandedCount(node); - if (nodeExpandCount < bestNodeExpandCount) { + SessionManager::sessionNode()->forEachGenericNode([&](Node *node) { + if (node->filePath() == fileName) { + if (!bestNode) { bestNode = node; bestNodeExpandCount = ProjectTreeWidget::expandedCount(node); + } else if (node->nodeType() < bestNode->nodeType()) { + bestNode = node; + bestNodeExpandCount = ProjectTreeWidget::expandedCount(node); + } else if (node->nodeType() == bestNode->nodeType()) { + int nodeExpandCount = ProjectTreeWidget::expandedCount(node); + if (nodeExpandCount < bestNodeExpandCount) { + bestNode = node; + bestNodeExpandCount = ProjectTreeWidget::expandedCount(node); + } } } - } + }); + return bestNode; } |