aboutsummaryrefslogtreecommitdiffstats
path: root/src/plugins/projectexplorer/projecttreewidget.cpp
diff options
context:
space:
mode:
authorhjk <hjk@qt.io>2017-03-06 18:03:43 +0100
committerhjk <hjk@qt.io>2017-03-08 09:05:29 +0000
commitd6df4492d01e06a3507ad854db6d4ba10a47d8af (patch)
treeb2e48ff234bc4a49b01f5c95cb00789a878edb62 /src/plugins/projectexplorer/projecttreewidget.cpp
parent05e8f34d3eb22030b10190397cdc1e1e080d6267 (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.cpp32
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;
}