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 <mahmoud.badri@qt.io>
Reviewed-by: Thomas Hartmann <thomas.hartmann@qt.io>
This commit is contained in:
Miikka Heikkinen
2021-06-07 17:36:07 +03:00
parent 7171b0385f
commit 56555d8b74
2 changed files with 9 additions and 2 deletions

View File

@@ -316,7 +316,14 @@ void Edit3DView::addQuick3DImport()
const QList<Import> imports = model()->possibleImports(); const QList<Import> imports = model()->possibleImports();
for (const auto &import : imports) { for (const auto &import : imports) {
if (import.url() == "QtQuick3D") { 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 // Subcomponent manager update needed to make item library entries appear
QmlDesignerPlugin::instance()->currentDesignDocument() QmlDesignerPlugin::instance()->currentDesignDocument()

View File

@@ -2142,7 +2142,7 @@ void TextToModelMerger::collectSemanticErrorsAndWarnings(QList<DocumentMessage>
for (const Import &import : m_rewriterView->model()->imports()) { for (const Import &import : m_rewriterView->model()->imports()) {
if (import.isLibraryImport() && import.url() == "QtQuick3D") { if (import.isLibraryImport() && import.url() == "QtQuick3D") {
const QString version = getHighestPossibleImport(import.url()); const QString version = getHighestPossibleImport(import.url());
if (Import::majorFromVersion(version) > import.majorVersion()) { if (!import.version().isEmpty() && Import::majorFromVersion(version) > import.majorVersion()) {
errors->append(DocumentMessage( errors->append(DocumentMessage(
QObject::tr( QObject::tr(
"The selected version of the Qt Quick 3D module is not supported with the selected Qt version.") "The selected version of the Qt Quick 3D module is not supported with the selected Qt version.")