From d3c9e3afc9e62de9a86b0733c19095b51f7ec3eb Mon Sep 17 00:00:00 2001 From: Marco Bubke Date: Mon, 16 May 2022 15:17:57 +0200 Subject: [PATCH] QmlDesigner: Add skip list for unsupported modules Task-number: QDS-6943 Change-Id: I59284c9482815e67a58c042b2e95b3b857ef9397 Reviewed-by: Thomas Hartmann --- .../qmldesigner/qmldesignerprojectmanager.cpp | 25 +++++++++++++++++-- 1 file changed, 23 insertions(+), 2 deletions(-) diff --git a/src/plugins/qmldesigner/qmldesignerprojectmanager.cpp b/src/plugins/qmldesigner/qmldesignerprojectmanager.cpp index c2561470190..32e5e2bc2b9 100644 --- a/src/plugins/qmldesigner/qmldesignerprojectmanager.cpp +++ b/src/plugins/qmldesigner/qmldesignerprojectmanager.cpp @@ -231,15 +231,36 @@ void projectQmldirPaths(::ProjectExplorer::Target *target, QStringList &qmldirPa + "/qmldir"); } +bool skipPath(const std::filesystem::path &path) +{ + auto directory = path.filename(); + qDebug() << path.string().data(); + + bool skip = directory == "QtApplicationManager" || directory == "QtInterfaceFramework" + || directory == "QtOpcUa" || directory == "Qt3D" || directory == "Qt3D" + || directory == "Scene2D" || directory == "Scene3D" || directory == "QtWayland"; + if (skip) + qDebug() << "skip" << path.string().data(); + + return skip; +} + void qtQmldirPaths(::ProjectExplorer::Target *target, QStringList &qmldirPaths) { const QString installDirectory = qmlPath(target).toString(); const std::filesystem::path installDirectoryPath{installDirectory.toStdString()}; - for (const auto &entry : std::filesystem::recursive_directory_iterator{installDirectoryPath}) { + auto current = std::filesystem::recursive_directory_iterator{installDirectoryPath}; + auto end = std::filesystem::end(current); + for (; current != end; ++current) { + const auto &entry = *current; auto path = entry.path(); - if (entry.path().filename() == "qmldir") { + if (current.depth() < 3 && !current->is_regular_file() && skipPath(path)) { + current.disable_recursion_pending(); + continue; + } + if (path.filename() == "qmldir") { qmldirPaths.push_back(QString::fromStdU16String(path.generic_u16string())); } }