diff options
-rw-r--r-- | src/qml/qml/qqmlmetatypedata.cpp | 2 | ||||
-rw-r--r-- | tests/auto/qml/qqmlmetatype/data/revisionedGroupedPropertiesUnversioned.qml | 5 | ||||
-rw-r--r-- | tests/auto/qml/qqmlmetatype/tst_qqmlmetatype.cpp | 23 |
3 files changed, 29 insertions, 1 deletions
diff --git a/src/qml/qml/qqmlmetatypedata.cpp b/src/qml/qml/qqmlmetatypedata.cpp index 4be26acdc6..71901e23fe 100644 --- a/src/qml/qml/qqmlmetatypedata.cpp +++ b/src/qml/qml/qqmlmetatypedata.cpp @@ -173,7 +173,7 @@ QQmlPropertyCache *QQmlMetaTypeData::propertyCache(const QQmlType &type, QTypeRe : (version.hasMinorVersion() ? QTypeRevision::fromVersion(type.version().majorVersion(), version.minorVersion()) - : type.version()); + : QTypeRevision::fromMajorVersion(type.version().majorVersion())); while (metaObject) { QQmlType t = QQmlMetaType::qmlType(metaObject, type.module(), combinedVersion); diff --git a/tests/auto/qml/qqmlmetatype/data/revisionedGroupedPropertiesUnversioned.qml b/tests/auto/qml/qqmlmetatype/data/revisionedGroupedPropertiesUnversioned.qml new file mode 100644 index 0000000000..cef3ab84e6 --- /dev/null +++ b/tests/auto/qml/qqmlmetatype/data/revisionedGroupedPropertiesUnversioned.qml @@ -0,0 +1,5 @@ +import GroupedTest + +MyRevisioned { + grouped.prop2: 5 +} diff --git a/tests/auto/qml/qqmlmetatype/tst_qqmlmetatype.cpp b/tests/auto/qml/qqmlmetatype/tst_qqmlmetatype.cpp index 7f81059b58..4d2e8c2b5d 100644 --- a/tests/auto/qml/qqmlmetatype/tst_qqmlmetatype.cpp +++ b/tests/auto/qml/qqmlmetatype/tst_qqmlmetatype.cpp @@ -630,6 +630,7 @@ class Grouped : public QObject { Q_OBJECT Q_PROPERTY(int prop READ prop WRITE setProp NOTIFY propChanged REVISION 1) + Q_PROPERTY(int prop2 READ prop WRITE setProp NOTIFY prop2Changed REVISION 2) public: int prop() const { return m_prop; } void setProp(int prop) @@ -637,11 +638,13 @@ public: if (prop != m_prop) { m_prop = prop; emit propChanged(prop); + emit prop2Changed(prop); } } signals: Q_REVISION(1) void propChanged(int prop); + Q_REVISION(2) void prop2Changed(int prop); private: int m_prop = 0; @@ -659,13 +662,24 @@ private: QScopedPointer<Grouped> m_grouped; }; +class MyRevisioned : public MyItem +{ + Q_OBJECT + Q_PROPERTY(int revisioned READ revisioned CONSTANT REVISION 1) +public: + int revisioned() const { return 12; } +}; + void tst_qqmlmetatype::revisionedGroupedProperties() { qmlClearTypeRegistrations(); qmlRegisterType<MyItem>("GroupedTest", 1, 0, "MyItem"); qmlRegisterType<MyItem, 1>("GroupedTest", 1, 1, "MyItem"); + qmlRegisterType<MyRevisioned>("GroupedTest", 1, 0, "MyRevisioned"); + qmlRegisterType<MyRevisioned, 1>("GroupedTest", 1, 1, "MyRevisioned"); qmlRegisterUncreatableType<Grouped>("GroupedTest", 1, 0, "Grouped", "Grouped"); qmlRegisterUncreatableType<Grouped, 1>("GroupedTest", 1, 1, "Grouped", "Grouped"); + qmlRegisterUncreatableType<Grouped, 2>("GroupedTest", 1, 2, "Grouped", "Grouped"); { QQmlEngine engine; @@ -680,6 +694,15 @@ void tst_qqmlmetatype::revisionedGroupedProperties() QQmlComponent invalid(&engine, testFileUrl("revisionedGroupedPropertiesInvalid.qml")); QVERIFY(invalid.isError()); } + + { + QQmlEngine engine; + QQmlComponent unversioned( + &engine, testFileUrl("revisionedGroupedPropertiesUnversioned.qml")); + QVERIFY2(unversioned.isReady(), qPrintable(unversioned.errorString())); + QScopedPointer<QObject> obj(unversioned.create()); + QVERIFY(!obj.isNull()); + } } void tst_qqmlmetatype::enumsInRecursiveImport_data() |