diff --git a/src/plugins/qmldesigner/components/importmanager/importmanagerview.cpp b/src/plugins/qmldesigner/components/importmanager/importmanagerview.cpp index f26178c4562..c2bce0b0ce5 100644 --- a/src/plugins/qmldesigner/components/importmanager/importmanagerview.cpp +++ b/src/plugins/qmldesigner/components/importmanager/importmanagerview.cpp @@ -81,8 +81,12 @@ void ImportManagerView::modelAboutToBeDetached(Model *model) void ImportManagerView::importsChanged(const QList &/*addedImports*/, const QList &/*removedImports*/) { - if (m_importsWidget) + if (m_importsWidget) { m_importsWidget->setImports(model()->imports()); + // setImports recreates labels, so we need to update used imports, as it is not guaranteed + // usedImportsChanged notification will come after this. + m_importsWidget->setUsedImports(model()->usedImports()); + } } void ImportManagerView::possibleImportsChanged(const QList &/*possibleImports*/) diff --git a/src/plugins/qmldesigner/designercore/filemanager/changeimportsvisitor.cpp b/src/plugins/qmldesigner/designercore/filemanager/changeimportsvisitor.cpp index a35ff98ef4b..cc82a5607eb 100644 --- a/src/plugins/qmldesigner/designercore/filemanager/changeimportsvisitor.cpp +++ b/src/plugins/qmldesigner/designercore/filemanager/changeimportsvisitor.cpp @@ -85,10 +85,25 @@ bool ChangeImportsVisitor::remove(QmlJS::AST::UiProgram *ast, const Import &impo bool ChangeImportsVisitor::equals(QmlJS::AST::UiImport *ast, const Import &import) { + bool equal = false; if (import.isLibraryImport()) - return toString(ast->importUri) == import.url(); + equal = toString(ast->importUri) == import.url(); else if (import.isFileImport()) - return ast->fileName == import.file(); - else - return false; + equal = ast->fileName == import.file(); + + if (equal) { + equal = (!ast->version || (ast->version->minorVersion == 0 && ast->version->majorVersion == 0)) + && import.version().isEmpty(); + if (!equal && ast->version) { + const QStringList versions = import.version().split('.'); + if (versions.size() >= 1 && versions[0].toInt() == ast->version->majorVersion) { + if (versions.size() >= 2) + equal = versions[1].toInt() == ast->version->minorVersion; + else + equal = ast->version->minorVersion == 0; + } + } + } + + return equal; }