diff options
author | Ulf Hermann <ulf.hermann@qt.io> | 2021-06-07 15:28:54 +0200 |
---|---|---|
committer | Ulf Hermann <ulf.hermann@qt.io> | 2021-06-09 14:47:13 +0200 |
commit | c4addf7d0e91cd39b636a88772ae9543f11e2c8c (patch) | |
tree | a82c384a019573365ab357767972d5344abed495 /src/qml/qml/qqmlengine.cpp | |
parent | e5383a5d5dd02afdbe94b380394fd88d8320e35a (diff) |
Pass QMetaType by value rather than by ID in more places
This saves us some ping-pong between the IDs and the QMetaTypes, and
avoids possible ambiguities if multiple metatypes are registered for the
same C++ type.
Change-Id: I81cec94a9cd05d69927dc884f65574f0ab2ddc22
Reviewed-by: Maximilian Goldstein <max.goldstein@qt.io>
Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
Diffstat (limited to 'src/qml/qml/qqmlengine.cpp')
-rw-r--r-- | src/qml/qml/qqmlengine.cpp | 35 |
1 files changed, 17 insertions, 18 deletions
diff --git a/src/qml/qml/qqmlengine.cpp b/src/qml/qml/qqmlengine.cpp index 4b90f6a501..dfcf52a8e4 100644 --- a/src/qml/qml/qqmlengine.cpp +++ b/src/qml/qml/qqmlengine.cpp @@ -1343,7 +1343,7 @@ template<> QJSValue QQmlEngine::singletonInstance<QJSValue>(int qmlTypeId) { Q_D(QQmlEngine); - QQmlType type = QQmlMetaType::qmlType(qmlTypeId, QQmlMetaType::TypeIdCategory::QmlType); + QQmlType type = QQmlMetaType::qmlTypeById(qmlTypeId); if (!type.isValid() || !type.isSingleton()) return QJSValue(); @@ -2062,13 +2062,12 @@ static QQmlPropertyCache *propertyCacheForPotentialInlineComponentType(int t, co * * Look up by type's baseMetaObject. */ -QQmlMetaObject QQmlEnginePrivate::rawMetaObjectForType(int t) const +QQmlMetaObject QQmlEnginePrivate::rawMetaObjectForType(QMetaType metaType) const { - if (QQmlPropertyCache *composite = findPropertyCacheInCompositeTypes(t)) + if (QQmlPropertyCache *composite = findPropertyCacheInCompositeTypes(metaType.id())) return QQmlMetaObject(composite); - QQmlType type = QQmlMetaType::qmlType(t); - return QQmlMetaObject(type.baseMetaObject()); + return QQmlMetaObject(QQmlMetaType::qmlType(metaType).baseMetaObject()); } /*! @@ -2076,13 +2075,12 @@ QQmlMetaObject QQmlEnginePrivate::rawMetaObjectForType(int t) const * * Look up by type's metaObject. */ -QQmlMetaObject QQmlEnginePrivate::metaObjectForType(int t) const +QQmlMetaObject QQmlEnginePrivate::metaObjectForType(QMetaType metaType) const { - if (QQmlPropertyCache *composite = findPropertyCacheInCompositeTypes(t)) + if (QQmlPropertyCache *composite = findPropertyCacheInCompositeTypes(metaType.id())) return QQmlMetaObject(composite); - QQmlType type = QQmlMetaType::qmlType(t); - return QQmlMetaObject(type.metaObject()); + return QQmlMetaObject(QQmlMetaType::qmlType(metaType).metaObject()); } /*! @@ -2090,12 +2088,12 @@ QQmlMetaObject QQmlEnginePrivate::metaObjectForType(int t) const * * Look up by type's metaObject and version. */ -QQmlPropertyCache *QQmlEnginePrivate::propertyCacheForType(int t) +QQmlPropertyCache *QQmlEnginePrivate::propertyCacheForType(QMetaType metaType) { - if (QQmlPropertyCache *composite = findPropertyCacheInCompositeTypes(t)) + if (QQmlPropertyCache *composite = findPropertyCacheInCompositeTypes(metaType.id())) return composite; - QQmlType type = QQmlMetaType::qmlType(t); + const QQmlType type = QQmlMetaType::qmlType(metaType); return type.isValid() ? cache(type.metaObject(), type.version()) : nullptr; } @@ -2106,12 +2104,12 @@ QQmlPropertyCache *QQmlEnginePrivate::propertyCacheForType(int t) * TODO: Is this correct? Passing a plain QTypeRevision() rather than QTypeRevision::zero() or * the actual type's version seems strange. The behavior has been in place for a while. */ -QQmlPropertyCache *QQmlEnginePrivate::rawPropertyCacheForType(int t) +QQmlPropertyCache *QQmlEnginePrivate::rawPropertyCacheForType(QMetaType metaType) { - if (QQmlPropertyCache *composite = findPropertyCacheInCompositeTypes(t)) + if (QQmlPropertyCache *composite = findPropertyCacheInCompositeTypes(metaType.id())) return composite; - QQmlType type = QQmlMetaType::qmlType(t); + const QQmlType type = QQmlMetaType::qmlType(metaType); return type.isValid() ? cache(type.baseMetaObject(), QTypeRevision()) : nullptr; } @@ -2121,12 +2119,13 @@ QQmlPropertyCache *QQmlEnginePrivate::rawPropertyCacheForType(int t) * Look up by QQmlType and version. We only fall back to lookup by metaobject if the type * has no revisiononed attributes here. Unspecified versions are interpreted as "any". */ -QQmlPropertyCache *QQmlEnginePrivate::rawPropertyCacheForType(int t, QTypeRevision version) +QQmlPropertyCache *QQmlEnginePrivate::rawPropertyCacheForType( + QMetaType metaType, QTypeRevision version) { - if (QQmlPropertyCache *composite = findPropertyCacheInCompositeTypes(t)) + if (QQmlPropertyCache *composite = findPropertyCacheInCompositeTypes(metaType.id())) return composite; - QQmlType type = QQmlMetaType::qmlType(t); + const QQmlType type = QQmlMetaType::qmlType(metaType); if (!type.isValid()) return nullptr; |