diff --git a/src/plugins/qmldesigner/designercore/model/texttomodelmerger.cpp b/src/plugins/qmldesigner/designercore/model/texttomodelmerger.cpp index 2635ab42878..eaf74c2e125 100644 --- a/src/plugins/qmldesigner/designercore/model/texttomodelmerger.cpp +++ b/src/plugins/qmldesigner/designercore/model/texttomodelmerger.cpp @@ -990,9 +990,17 @@ static QList generatePossibleLibraryImports(const QHashlibraryImports(viewContext); - QHash filteredPossibleImportKeys - = filterPossibleImportKeys(m_possibleImportKeys, m_rewriterView->model()); + static QUrl lastProjectUrl; + auto &externalDependencies = m_rewriterView->externalDependencies(); + auto projectUrl = externalDependencies.projectUrl(); + + if (m_possibleImportKeys.isEmpty() || projectUrl != lastProjectUrl) + m_possibleImportKeys = snapshot.importDependencies()->libraryImports(viewContext); + + lastProjectUrl = projectUrl; + + QHash filteredPossibleImportKeys = filterPossibleImportKeys( + m_possibleImportKeys, m_rewriterView->model()); const QmlJS::Imports *imports = m_scopeChain->context()->imports(m_document.data()); if (imports) @@ -1139,6 +1147,9 @@ bool TextToModelMerger::load(const QString &data, DifferenceHandler &differenceH collectLinkErrors(&errors, ctxt); setupPossibleImports(snapshot, m_vContext); + + qCInfo(rewriterBenchmark) << "possible imports:" << time.elapsed(); + setupImports(m_document, differenceHandler); qCInfo(rewriterBenchmark) << "imports setup:" << time.elapsed();