aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSimon Hausmann <simon.hausmann@qt.io>2018-08-23 10:58:30 +0200
committerSimon Hausmann <simon.hausmann@qt.io>2018-08-23 10:16:22 +0000
commit5a014daf115676da085dddf47d0605e7db68566b (patch)
treeddfd3010d6b1841d3150480fb9a2850668939111
parent98528ae780deecc831c115379d8aa90fa9450e44 (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.cpp8
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)