aboutsummaryrefslogtreecommitdiffstats
path: root/src/plugins
diff options
context:
space:
mode:
Diffstat (limited to 'src/plugins')
-rw-r--r--src/plugins/projectexplorer/projectnodes.cpp14
-rw-r--r--src/plugins/projectexplorer/projectnodes.h8
-rw-r--r--src/plugins/projectexplorer/projecttreewidget.cpp19
3 files changed, 17 insertions, 24 deletions
diff --git a/src/plugins/projectexplorer/projectnodes.cpp b/src/plugins/projectexplorer/projectnodes.cpp
index 1b694aa85c3..62411e72c56 100644
--- a/src/plugins/projectexplorer/projectnodes.cpp
+++ b/src/plugins/projectexplorer/projectnodes.cpp
@@ -163,20 +163,6 @@ void Node::setAbsoluteFilePathAndLine(const Utils::FileName &path, int line)
Node::~Node() = default;
-NodeType Node::nodeType() const
-{
- if (asFileNode())
- return NodeType::File;
- if (isFolderNodeType())
- return NodeType::Folder;
- if (isProjectNodeType())
- return NodeType::Project;
- if (isVirtualFolderType())
- return NodeType::VirtualFolder;
- QTC_CHECK(false);
- return NodeType::File;
-}
-
int Node::priority() const
{
return m_priority;
diff --git a/src/plugins/projectexplorer/projectnodes.h b/src/plugins/projectexplorer/projectnodes.h
index c2596497a2b..0d1e703e0b9 100644
--- a/src/plugins/projectexplorer/projectnodes.h
+++ b/src/plugins/projectexplorer/projectnodes.h
@@ -44,13 +44,6 @@ namespace ProjectExplorer {
class Project;
-enum class NodeType : quint16 {
- File = 1,
- Folder,
- VirtualFolder,
- Project
-};
-
// File types common for qt projects
enum class FileType : quint16 {
Unknown = 0,
@@ -116,7 +109,6 @@ public:
virtual bool isProjectNodeType() const { return false; }
virtual bool isVirtualFolderType() const { return false; }
- NodeType nodeType() const;
int priority() const;
ProjectNode *parentProjectNode() const; // parent project, will be nullptr for the top-level project
diff --git a/src/plugins/projectexplorer/projecttreewidget.cpp b/src/plugins/projectexplorer/projecttreewidget.cpp
index 38748ff28dc..2af492494af 100644
--- a/src/plugins/projectexplorer/projecttreewidget.cpp
+++ b/src/plugins/projectexplorer/projecttreewidget.cpp
@@ -355,6 +355,21 @@ Node *ProjectTreeWidget::nodeForFile(const FileName &fileName)
Node *bestNode = nullptr;
int bestNodeExpandCount = INT_MAX;
+ // FIXME: Check that the values used make sense in the context.
+ auto priority = [](Node *node) {
+ if (node->asFileNode())
+ return 1;
+ if (node->isFolderNodeType())
+ return 2;
+ if (node->isVirtualFolderType())
+ return 3;
+ if (node->isProjectNodeType())
+ return 4;
+ QTC_CHECK(false);
+ return 1;
+ };
+
+ // FIXME: Looks like this could be done with less cycles.
for (Project *project : SessionManager::projects()) {
if (ProjectNode *projectNode = project->rootProjectNode()) {
projectNode->forEachGenericNode([&](Node *node) {
@@ -362,10 +377,10 @@ Node *ProjectTreeWidget::nodeForFile(const FileName &fileName)
if (!bestNode) {
bestNode = node;
bestNodeExpandCount = ProjectTreeWidget::expandedCount(node);
- } else if (node->nodeType() < bestNode->nodeType()) {
+ } else if (priority(node) < priority(bestNode)) {
bestNode = node;
bestNodeExpandCount = ProjectTreeWidget::expandedCount(node);
- } else if (node->nodeType() == bestNode->nodeType()) {
+ } else if (priority(node) == priority(bestNode)) {
int nodeExpandCount = ProjectTreeWidget::expandedCount(node);
if (nodeExpandCount < bestNodeExpandCount) {
bestNode = node;