diff --git a/src/plugins/projectexplorer/projectnodeshelper.h b/src/plugins/projectexplorer/projectnodeshelper.h index e207b5c46fb..b9e3cc27aa0 100644 --- a/src/plugins/projectexplorer/projectnodeshelper.h +++ b/src/plugins/projectexplorer/projectnodeshelper.h @@ -24,42 +24,38 @@ QList scanForFilesRecursively( const Utils::FilePath &directory, const QDir::Filters &filter, const std::function factory, - QSet &visited, + QSet &visited, const QList &versionControls) { QList result; - const QDir baseDir = QDir(directory.toString()); - // Do not follow directory loops: - const int visitedCount = visited.count(); - visited.insert(baseDir.canonicalPath()); - if (visitedCount == visited.count()) + if (!Utils::insert(visited, directory.canonicalPath())) return result; - const QFileInfoList entries = baseDir.entryInfoList(QStringList(), filter); + const Utils::FilePaths entries = directory.dirEntries(filter); double progress = 0; const double progressIncrement = progressRange / static_cast(entries.count()); int lastIntProgress = 0; - for (const QFileInfo &entry : entries) { + for (const Utils::FilePath &entry : entries) { if (promise.isCanceled()) return result; - const Utils::FilePath entryName = Utils::FilePath::fromString(entry.absoluteFilePath()); - if (!Utils::contains(versionControls, [&entryName](const Core::IVersionControl *vc) { - return vc->isVcsFileOrDirectory(entryName); + if (!Utils::contains(versionControls, [entry](const Core::IVersionControl *vc) { + return vc->isVcsFileOrDirectory(entry); })) { - if (entry.isDir()) + if (entry.isDir()) { result.append(scanForFilesRecursively(promise, progress, progressIncrement, - entryName, + entry, filter, factory, visited, versionControls)); - else if (FileNode *node = factory(entryName)) + } else if (FileNode *node = factory(entry)) { result.append(node); + } } progress += progressIncrement; const int intProgress = std::min(static_cast(progressStart + progress), @@ -82,7 +78,7 @@ QList scanForFiles( const QDir::Filters &filter, const std::function factory) { - QSet visited; + QSet visited; promise.setProgressRange(0, 1000000); return Internal::scanForFilesRecursively(promise, 0.0,