diff options
author | Simon Hausmann <simon.hausmann@qt.io> | 2018-08-23 10:58:30 +0200 |
---|---|---|
committer | Simon Hausmann <simon.hausmann@qt.io> | 2018-08-23 10:16:22 +0000 |
commit | 5a014daf115676da085dddf47d0605e7db68566b (patch) | |
tree | ddfd3010d6b1841d3150480fb9a2850668939111 | |
parent | 98528ae780deecc831c115379d8aa90fa9450e44 (diff) |
Fix QML extended type registration
Avoid calling init() too early (indirectly through metaObject()), as it
relies on subsequent type registrations for extended types and must be
called as late as possible.
Amends bb296168f426d7e646c0208427f25687f96e2693
Task-number: QTBUG-70127
Change-Id: I87f67c7f26cddf7d7319be929512e339c8b6c9ad
Reviewed-by: Rainer Keller <Rainer.Keller@qt.io>
-rw-r--r-- | src/qml/qml/qqmlmetatype.cpp | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/src/qml/qml/qqmlmetatype.cpp b/src/qml/qml/qqmlmetatype.cpp index 75241ab99c..2c22d255a4 100644 --- a/src/qml/qml/qqmlmetatype.cpp +++ b/src/qml/qml/qqmlmetatype.cpp @@ -503,9 +503,11 @@ QQmlType::QQmlType(QQmlMetaTypeData *data, const QString &elementName, const QQm d->extraData.cd->extMetaObject = type.extensionMetaObject; // Check if the user wants only scoped enum classes - auto indexOfClassInfo = metaObject()->indexOfClassInfo("RegisterEnumClassesUnscoped"); - if (indexOfClassInfo != -1 && QString::fromUtf8(metaObject()->classInfo(indexOfClassInfo).value()) == QLatin1String("false")) - d->extraData.cd->registerEnumClassesUnscoped = false; + if (d->baseMetaObject) { + auto indexOfClassInfo = d->baseMetaObject->indexOfClassInfo("RegisterEnumClassesUnscoped"); + if (indexOfClassInfo != -1 && QString::fromUtf8(d->baseMetaObject->classInfo(indexOfClassInfo).value()) == QLatin1String("false")) + d->extraData.cd->registerEnumClassesUnscoped = false; + } } QQmlType::QQmlType(QQmlMetaTypeData *data, const QString &elementName, const QQmlPrivate::RegisterCompositeType &type) |