From 49989d46dc2cba875f26d79db4607c78bee9fd5a Mon Sep 17 00:00:00 2001 From: Tobias Hunger Date: Fri, 10 Mar 2017 15:07:29 +0100 Subject: [PATCH] FolderNode: Add isAncesterOf(Node *) Change-Id: I716593e7fd25f4acc31933e2f28273ced4674b73 Reviewed-by: hjk --- src/plugins/projectexplorer/projectnodes.cpp | 10 ++++++++++ src/plugins/projectexplorer/projectnodes.h | 2 ++ 2 files changed, 12 insertions(+) diff --git a/src/plugins/projectexplorer/projectnodes.cpp b/src/plugins/projectexplorer/projectnodes.cpp index 72dc63a08e9..39305c7e8c7 100644 --- a/src/plugins/projectexplorer/projectnodes.cpp +++ b/src/plugins/projectexplorer/projectnodes.cpp @@ -496,6 +496,16 @@ void FolderNode::compress() } } +bool FolderNode::isAncesterOf(Node *n) +{ + if (n == this) + return true; + FolderNode *p = n->parentFolderNode(); + while (p && p != this) + p = p->parentFolderNode(); + return p == this; +} + bool FolderNode::replaceSubtree(Node *oldNode, Node *newNode) { std::unique_ptr nn(newNode); diff --git a/src/plugins/projectexplorer/projectnodes.h b/src/plugins/projectexplorer/projectnodes.h index 2f9ad0cdefe..6a9f3eb723a 100644 --- a/src/plugins/projectexplorer/projectnodes.h +++ b/src/plugins/projectexplorer/projectnodes.h @@ -201,6 +201,8 @@ public: void buildTree(QList &files, const Utils::FileName &overrideBaseDir = Utils::FileName()); void compress(); + bool isAncesterOf(Node *n); + // takes ownership of newNode. // Will delete newNode if oldNode is not a child of this node. bool replaceSubtree(Node *oldNode, Node *newNode);