diff --git a/src/plugins/projectexplorer/projectnodes.cpp b/src/plugins/projectexplorer/projectnodes.cpp index 4f6c5b7eece..d8f3c726af2 100644 --- a/src/plugins/projectexplorer/projectnodes.cpp +++ b/src/plugins/projectexplorer/projectnodes.cpp @@ -409,9 +409,10 @@ FolderNode *FolderNode::folderNode(const Utils::FileName &directory) const }); } -FolderNode *FolderNode::recursiveFindOrCreateFolderNode(const QString &directory) +FolderNode *FolderNode::recursiveFindOrCreateFolderNode(const QString &directory, + const Utils::FileName &overrideBaseDir) { - Utils::FileName path = filePath(); + Utils::FileName path = overrideBaseDir.isEmpty() ? filePath() : overrideBaseDir; QString workPath; if (path.isEmpty() || path.toFileInfo().isRoot()) { workPath = directory; @@ -440,7 +441,7 @@ FolderNode *FolderNode::recursiveFindOrCreateFolderNode(const QString &directory return parent; } -void FolderNode::buildTree(QList &files) +void FolderNode::buildTree(QList &files, const Utils::FileName &overrideBaseDir) { // Gather old list QList oldFiles = recursiveFileNodes(); @@ -461,7 +462,8 @@ void FolderNode::buildTree(QList &files) foreach (ProjectExplorer::FileNode *fn, added) { // Get relative path to rootNode QString parentDir = fn->filePath().toFileInfo().absolutePath(); - ProjectExplorer::FolderNode *folder = recursiveFindOrCreateFolderNode(parentDir); + ProjectExplorer::FolderNode *folder + = recursiveFindOrCreateFolderNode(parentDir, overrideBaseDir); addedFolderMapping[folder] << fn; } diff --git a/src/plugins/projectexplorer/projectnodes.h b/src/plugins/projectexplorer/projectnodes.h index 2e6a39e2ecb..00604b02a5a 100644 --- a/src/plugins/projectexplorer/projectnodes.h +++ b/src/plugins/projectexplorer/projectnodes.h @@ -193,8 +193,9 @@ public: QList recursiveFileNodes() const; QList folderNodes() const; FolderNode *folderNode(const Utils::FileName &directory) const; - FolderNode *recursiveFindOrCreateFolderNode(const QString &directory); - void buildTree(QList &files); + FolderNode *recursiveFindOrCreateFolderNode(const QString &directory, + const Utils::FileName &overrideBaseDir = Utils::FileName()); + void buildTree(QList &files, const Utils::FileName &overrideBaseDir = Utils::FileName()); virtual void accept(NodesVisitor *visitor);