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();
for (const auto &import : imports) {
if (import.url() == "QtQuick3D") {
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()

View File

@@ -2142,7 +2142,7 @@ void TextToModelMerger::collectSemanticErrorsAndWarnings(QList<DocumentMessage>
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.")