forked from qt-creator/qt-creator
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>
This commit is contained in:
@@ -9,6 +9,7 @@
|
|||||||
|
|
||||||
#include <QDirIterator>
|
#include <QDirIterator>
|
||||||
#include <QFile>
|
#include <QFile>
|
||||||
|
#include <QHash>
|
||||||
|
|
||||||
namespace QmlDesigner {
|
namespace QmlDesigner {
|
||||||
|
|
||||||
@@ -50,6 +51,8 @@ void ModuleScanner::scan([[maybe_unused]] std::string_view modulePath)
|
|||||||
#ifdef QDS_HAS_QMLPRIVATE
|
#ifdef QDS_HAS_QMLPRIVATE
|
||||||
QDirIterator dirIterator{QString::fromUtf8(modulePath), QDir::Dirs, QDirIterator::Subdirectories};
|
QDirIterator dirIterator{QString::fromUtf8(modulePath), QDir::Dirs, QDirIterator::Subdirectories};
|
||||||
|
|
||||||
|
QMap<QString, bool> moduleNames;
|
||||||
|
|
||||||
while (dirIterator.hasNext()) {
|
while (dirIterator.hasNext()) {
|
||||||
auto directoryPath = dirIterator.next();
|
auto directoryPath = dirIterator.next();
|
||||||
QString qmldirPath = directoryPath + "/qmldir";
|
QString qmldirPath = directoryPath + "/qmldir";
|
||||||
@@ -69,6 +72,10 @@ void ModuleScanner::scan([[maybe_unused]] std::string_view modulePath)
|
|||||||
if (moduleName.isEmpty() || m_skip(moduleName))
|
if (moduleName.isEmpty() || m_skip(moduleName))
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
|
if (moduleNames.contains(moduleName))
|
||||||
|
continue;
|
||||||
|
|
||||||
|
moduleNames.insert(moduleName, true);
|
||||||
m_modules.push_back(
|
m_modules.push_back(
|
||||||
Import::createLibraryImport(moduleName, createVersion(parser.components())));
|
Import::createLibraryImport(moduleName, createVersion(parser.components())));
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user