diff options
Diffstat (limited to 'src/plugins')
-rw-r--r-- | src/plugins/projectexplorer/projectnodes.cpp | 14 | ||||
-rw-r--r-- | src/plugins/projectexplorer/projectnodes.h | 8 | ||||
-rw-r--r-- | src/plugins/projectexplorer/projecttreewidget.cpp | 19 |
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; |