diff --git a/src/plugins/qmldesigner/components/itemlibrary/itemlibrarymodel.cpp b/src/plugins/qmldesigner/components/itemlibrary/itemlibrarymodel.cpp index 6c395fbd686..91a930b7831 100644 --- a/src/plugins/qmldesigner/components/itemlibrary/itemlibrarymodel.cpp +++ b/src/plugins/qmldesigner/components/itemlibrary/itemlibrarymodel.cpp @@ -212,6 +212,7 @@ void ItemLibraryModel::update(ItemLibraryInfo *itemLibraryInfo, Model *model) QString projectName = project ? project->displayName() : ""; // create import sections + const QList usedImports = model->usedImports(); QHash importHash; for (const Import &import : model->imports()) { if (import.url() != projectName) { @@ -239,6 +240,7 @@ void ItemLibraryModel::update(ItemLibraryInfo *itemLibraryInfo, Model *model) auto sectionType = isQuick3DAsset ? ItemLibraryImport::SectionType::Quick3DAssets : ItemLibraryImport::SectionType::Default; ItemLibraryImport *itemLibImport = new ItemLibraryImport(import, this, sectionType); + itemLibImport->setImportUsed(usedImports.contains(import)); importHash.insert(importUrl, itemLibImport); } } diff --git a/src/plugins/qmldesigner/designercore/model/texttomodelmerger.cpp b/src/plugins/qmldesigner/designercore/model/texttomodelmerger.cpp index 2a23466e094..432667c63a4 100644 --- a/src/plugins/qmldesigner/designercore/model/texttomodelmerger.cpp +++ b/src/plugins/qmldesigner/designercore/model/texttomodelmerger.cpp @@ -934,15 +934,23 @@ void TextToModelMerger::setupUsedImports() const QList allImports = imports->all(); + QSet usedImportsSet; QList usedImports; - foreach (const QmlJS::Import &import, allImports) { - if (import.used && !import.info.name().isEmpty()) { - if (import.info.type() == ImportType::Library) { + // populate usedImportsSet from current model nodes + const QList allModelNodes = m_rewriterView->allModelNodes(); + for (const ModelNode &modelNode : allModelNodes) { + QString type = QString::fromUtf8(modelNode.type()); + if (type.contains('.')) + usedImportsSet.insert(type.left(type.lastIndexOf('.'))); + } + + for (const QmlJS::Import &import : allImports) { + if (!import.info.name().isEmpty() && usedImportsSet.contains(import.info.name())) { + if (import.info.type() == ImportType::Library) usedImports.append(Import::createLibraryImport(import.info.name(), import.info.version().toString(), import.info.as())); - } else if (import.info.type() == ImportType::Directory || import.info.type() == ImportType::File) { + else if (import.info.type() == ImportType::Directory || import.info.type() == ImportType::File) usedImports.append(Import::createFileImport(import.info.name(), import.info.version().toString(), import.info.as())); - } } }