diff options
author | Thomas Hartmann <thomas.hartmann@qt.io> | 2023-04-21 14:01:33 +0200 |
---|---|---|
committer | Thomas Hartmann <thomas.hartmann@qt.io> | 2023-04-21 12:42:34 +0000 |
commit | 81cb581e4ac11ae3e2a7d730fc26592f667736c3 (patch) | |
tree | 1e10c481f67d905aa75dfbb5d6e7ab63f8b0ee70 | |
parent | 3abf63b92120f09befb6a1f06b95be82acbb7557 (diff) | |
download | qt-creator-81cb581e4ac11ae3e2a7d730fc26592f667736c3.tar.gz |
QmlDesigner: Avoid duplicate module names
We get every qmldir file twice and some files report QtQuick
multiple times.
This needs to be revisited.
Change-Id: I2271f71ee7da2c182fed468fa3ef8aca63785bb4
Reviewed-by: Tim Jenssen <tim.jenssen@qt.io>
-rw-r--r-- | src/plugins/qmldesigner/designercore/projectstorage/modulescanner.cpp | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/src/plugins/qmldesigner/designercore/projectstorage/modulescanner.cpp b/src/plugins/qmldesigner/designercore/projectstorage/modulescanner.cpp index ffcf28d765..4a6adfa10d 100644 --- a/src/plugins/qmldesigner/designercore/projectstorage/modulescanner.cpp +++ b/src/plugins/qmldesigner/designercore/projectstorage/modulescanner.cpp @@ -9,6 +9,7 @@ #include <QDirIterator> #include <QFile> +#include <QHash> namespace QmlDesigner { @@ -50,6 +51,8 @@ void ModuleScanner::scan([[maybe_unused]] std::string_view modulePath) #ifdef QDS_HAS_QMLPRIVATE QDirIterator dirIterator{QString::fromUtf8(modulePath), QDir::Dirs, QDirIterator::Subdirectories}; + QMap<QString, bool> moduleNames; + while (dirIterator.hasNext()) { auto directoryPath = dirIterator.next(); QString qmldirPath = directoryPath + "/qmldir"; @@ -69,6 +72,10 @@ void ModuleScanner::scan([[maybe_unused]] std::string_view modulePath) if (moduleName.isEmpty() || m_skip(moduleName)) continue; + if (moduleNames.contains(moduleName)) + continue; + + moduleNames.insert(moduleName, true); m_modules.push_back( Import::createLibraryImport(moduleName, createVersion(parser.components()))); } |