diff options
author | Alexandru Croitor <alexandru.croitor@qt.io> | 2022-06-16 17:07:46 +0200 |
---|---|---|
committer | Qt Cherry-pick Bot <cherrypick_bot@qt-project.org> | 2022-06-20 07:33:32 +0000 |
commit | 648eece1741f8287678a56989e4776e5009df341 (patch) | |
tree | d66dc9457efd147856f9d4e6984de7649033250d | |
parent | 505b6a6d039405386c691d1a3edc94e8f6259fc2 (diff) |
Qml: Allow major version of module to be zero
If there is no QML.AddedInVersion then the component should be available
from version X.0, with X being the current version of the module.
Amends 464abaec05e0aa0ab699243412c50a5d5ac30742
Fixes: QTBUG-104373
Change-Id: If30b66df384fe815c41d2a0b5ca7b034b9955956
Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
(cherry picked from commit 9225723a317b8c7e805416592b78aca0ed320049)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
6 files changed, 51 insertions, 1 deletions
diff --git a/src/qml/qml/qqml.cpp b/src/qml/qml/qqml.cpp index 8781e4bf50..54d1be7d59 100644 --- a/src/qml/qml/qqml.cpp +++ b/src/qml/qml/qqml.cpp @@ -506,7 +506,7 @@ int QQmlPrivate::qmlregister(RegistrationType type, void *data) const QTypeRevision added = revisionClassInfo( type.classInfoMetaObject, "QML.AddedInVersion", - QTypeRevision::fromMinorVersion(0)); + QTypeRevision::fromVersion(type.version.majorVersion(), 0)); const QTypeRevision removed = revisionClassInfo( type.classInfoMetaObject, "QML.RemovedInVersion"); const QList<QTypeRevision> furtherRevisions = revisionClassInfos(type.classInfoMetaObject, diff --git a/tests/auto/qml/qmltyperegistrar/CMakeLists.txt b/tests/auto/qml/qmltyperegistrar/CMakeLists.txt index 5f6f8e83b2..d1ad5858a5 100644 --- a/tests/auto/qml/qmltyperegistrar/CMakeLists.txt +++ b/tests/auto/qml/qmltyperegistrar/CMakeLists.txt @@ -74,3 +74,5 @@ qt_add_qml_module(tst-qmltyperegistrar-with-dashes foo.cpp foo.h ) qt_autogen_tools_initial_setup(tst-qmltyperegistrar-with-dashesplugin) + +add_subdirectory(VersionZero) diff --git a/tests/auto/qml/qmltyperegistrar/VersionZero/CMakeLists.txt b/tests/auto/qml/qmltyperegistrar/VersionZero/CMakeLists.txt new file mode 100644 index 0000000000..09b9cea69a --- /dev/null +++ b/tests/auto/qml/qmltyperegistrar/VersionZero/CMakeLists.txt @@ -0,0 +1,20 @@ +qt_add_library(tst_qmltyperegistrar_major_version_zero) +qt_autogen_tools_initial_setup(tst_qmltyperegistrar_major_version_zero) +target_link_libraries(tst_qmltyperegistrar_major_version_zero PRIVATE Qt::Core Qt::Qml) +qt_enable_autogen_tool(tst_qmltyperegistrar_major_version_zero "moc" ON) +qt_add_qml_module(tst_qmltyperegistrar_major_version_zero + URI VersionZero + VERSION 0.1 + SOURCES + version_zero_type.h +) +qt_autogen_tools_initial_setup(tst_qmltyperegistrar_major_version_zero) + +# Make sure the backing library is found on Windows next to the executable +set_target_properties( + tst_qmltyperegistrar_major_version_zero + PROPERTIES + RUNTIME_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/.. + LIBRARY_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/.. + ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/.. +) diff --git a/tests/auto/qml/qmltyperegistrar/VersionZero/version_zero_type.h b/tests/auto/qml/qmltyperegistrar/VersionZero/version_zero_type.h new file mode 100644 index 0000000000..a3277e6ab3 --- /dev/null +++ b/tests/auto/qml/qmltyperegistrar/VersionZero/version_zero_type.h @@ -0,0 +1,17 @@ +// Copyright (C) 2022 The Qt Company Ltd. +// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0 + +#ifndef VERSION_ZERO_TYPE_H +#define VERSION_ZERO_TYPE_H + +#include <QtQml/qqml.h> + +class TypeInModuleMajorVersionZero : public QObject +{ + Q_OBJECT + QML_ELEMENT +public: + TypeInModuleMajorVersionZero(QObject *parent = nullptr) : QObject(parent) {} +}; + +#endif // VERSION_ZERO_TYPE_H diff --git a/tests/auto/qml/qmltyperegistrar/tst_qmltyperegistrar.cpp b/tests/auto/qml/qmltyperegistrar/tst_qmltyperegistrar.cpp index 3fc746552e..68a21d8db8 100644 --- a/tests/auto/qml/qmltyperegistrar/tst_qmltyperegistrar.cpp +++ b/tests/auto/qml/qmltyperegistrar/tst_qmltyperegistrar.cpp @@ -396,4 +396,14 @@ void tst_qmltyperegistrar::foreignRevisionedProperty() } #endif +void tst_qmltyperegistrar::typeInModuleMajorVersionZero() +{ + QQmlEngine engine; + QQmlComponent c(&engine); + c.setData(QStringLiteral("import VersionZero\n" + "TypeInModuleMajorVersionZero {}\n").toUtf8(), + QUrl(QTest::currentDataTag())); + QVERIFY2(c.isReady(), qPrintable(c.errorString())); +} + QTEST_MAIN(tst_qmltyperegistrar) diff --git a/tests/auto/qml/qmltyperegistrar/tst_qmltyperegistrar.h b/tests/auto/qml/qmltyperegistrar/tst_qmltyperegistrar.h index 385d3b6666..f2ccaba618 100644 --- a/tests/auto/qml/qmltyperegistrar/tst_qmltyperegistrar.h +++ b/tests/auto/qml/qmltyperegistrar/tst_qmltyperegistrar.h @@ -532,6 +532,7 @@ private slots: void addRemoveVersion_data(); void addRemoveVersion(); + void typeInModuleMajorVersionZero(); private: QByteArray qmltypesData; |