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>
This commit is contained in:
hjk
2017-03-06 18:03:43 +01:00
parent 05e8f34d3e
commit d6df4492d0
15 changed files with 55 additions and 321 deletions

View File

@@ -31,9 +31,8 @@
#include "buildconfiguration.h"
#include "deployconfiguration.h"
#include "projectexplorer.h"
#include "nodesvisitor.h"
#include "editorconfiguration.h"
#include "projectnodes.h"
#include "editorconfiguration.h"
#include <coreplugin/icore.h>
#include <coreplugin/idocument.h>
@@ -624,23 +623,18 @@ QList<Project *> SessionManager::projectOrder(const Project *project)
return result;
}
QList<Node *> SessionManager::nodesForFile(const Utils::FileName &fileName)
{
FindNodesForFileVisitor findNodes(fileName);
sessionNode()->accept(&findNodes);
return findNodes.nodes();
}
// node for file returns a randomly selected node if there are multiple
// prefer to use nodesForFile and figure out which node you want
Node *SessionManager::nodeForFile(const Utils::FileName &fileName)
{
Node *node = nullptr;
foreach (Node *n, nodesForFile(fileName)) {
// prefer file nodes
if (!node || (node->nodeType() != NodeType::File && n->nodeType() == NodeType::File))
node = n;
}
sessionNode()->forEachGenericNode([&](Node *n) {
if (n->filePath() == fileName) {
// prefer file nodes
if (!node || (node->nodeType() != NodeType::File && n->nodeType() == NodeType::File))
node = n;
}
});
return node;
}