From 56555d8b746e946029df34da8945a176ec7b8b9f Mon Sep 17 00:00:00 2001 From: Miikka Heikkinen Date: Mon, 7 Jun 2021 17:36:07 +0300 Subject: [PATCH] QmlDesigner: Fix issues with QtQuick3D versioning Empty version no longer triggers error about version incompatibility when the import is set with Model::changeImports(). Adding QtQuick3D via the prompt inside 3D Edit view now correctly sets empty version instead of 6.x. Fixes: QDS-4494 Change-Id: I18e62ced6d6df45bc453431f8419bc853bf1e758 Reviewed-by: Mahmoud Badri Reviewed-by: Thomas Hartmann --- src/plugins/qmldesigner/components/edit3d/edit3dview.cpp | 9 ++++++++- .../qmldesigner/designercore/model/texttomodelmerger.cpp | 2 +- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/src/plugins/qmldesigner/components/edit3d/edit3dview.cpp b/src/plugins/qmldesigner/components/edit3d/edit3dview.cpp index ca15ec24032..175b081a35a 100644 --- a/src/plugins/qmldesigner/components/edit3d/edit3dview.cpp +++ b/src/plugins/qmldesigner/components/edit3d/edit3dview.cpp @@ -316,7 +316,14 @@ void Edit3DView::addQuick3DImport() const QList imports = model()->possibleImports(); for (const auto &import : imports) { if (import.url() == "QtQuick3D") { - model()->changeImports({import}, {}); + if (!import.version().isEmpty() && import.majorVersion() >= 6) { + // Prefer empty version number in Qt6 and beyond + model()->changeImports({Import::createLibraryImport( + import.url(), {}, import.alias(), + import.importPaths())}, {}); + } else { + model()->changeImports({import}, {}); + } // Subcomponent manager update needed to make item library entries appear QmlDesignerPlugin::instance()->currentDesignDocument() diff --git a/src/plugins/qmldesigner/designercore/model/texttomodelmerger.cpp b/src/plugins/qmldesigner/designercore/model/texttomodelmerger.cpp index 198efd918dc..7fd8ef1465e 100644 --- a/src/plugins/qmldesigner/designercore/model/texttomodelmerger.cpp +++ b/src/plugins/qmldesigner/designercore/model/texttomodelmerger.cpp @@ -2142,7 +2142,7 @@ void TextToModelMerger::collectSemanticErrorsAndWarnings(QList for (const Import &import : m_rewriterView->model()->imports()) { if (import.isLibraryImport() && import.url() == "QtQuick3D") { const QString version = getHighestPossibleImport(import.url()); - if (Import::majorFromVersion(version) > import.majorVersion()) { + if (!import.version().isEmpty() && Import::majorFromVersion(version) > import.majorVersion()) { errors->append(DocumentMessage( QObject::tr( "The selected version of the Qt Quick 3D module is not supported with the selected Qt version.")