diff --git a/src/plugins/projectexplorer/projectmanager.cpp b/src/plugins/projectexplorer/projectmanager.cpp index 260bfcb786f..3569e517289 100644 --- a/src/plugins/projectexplorer/projectmanager.cpp +++ b/src/plugins/projectexplorer/projectmanager.cpp @@ -521,6 +521,13 @@ Project *ProjectManager::projectForFile(const FilePath &fileName) }); } +QList ProjectManager::projectsForFile(const Utils::FilePath &fileName) +{ + return Utils::filtered(ProjectManager::projects(), [&fileName](Project *p) { + return p->isKnownFile(fileName) || isInProjectSourceDir(fileName, *p); + }); +} + bool ProjectManager::isInProjectSourceDir(const Utils::FilePath &filePath, const Project &project) { for (const Target * const target : project.targets()) { diff --git a/src/plugins/projectexplorer/projectmanager.h b/src/plugins/projectexplorer/projectmanager.h index 78b885f4cbe..bc186955a09 100644 --- a/src/plugins/projectexplorer/projectmanager.h +++ b/src/plugins/projectexplorer/projectmanager.h @@ -80,6 +80,7 @@ public: static QList projectOrder(const Project *project = nullptr); static Project *projectForFile(const Utils::FilePath &fileName); + static QList projectsForFile(const Utils::FilePath &fileName); static bool isInProjectSourceDir(const Utils::FilePath &filePath, const Project &project); static Project *projectWithProjectFilePath(const Utils::FilePath &filePath);