summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThomas Hartmann <thomas.hartmann@qt.io>2023-04-21 14:01:33 +0200
committerThomas Hartmann <thomas.hartmann@qt.io>2023-04-21 12:42:34 +0000
commit81cb581e4ac11ae3e2a7d730fc26592f667736c3 (patch)
tree1e10c481f67d905aa75dfbb5d6e7ab63f8b0ee70
parent3abf63b92120f09befb6a1f06b95be82acbb7557 (diff)
downloadqt-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.cpp7
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())));
}