diff options
-rw-r--r-- | src/qmltyperegistrar/qmltyperegistrar.cpp | 21 | ||||
-rw-r--r-- | src/qmltyperegistrar/qmltypesclassdescription.cpp | 3 |
2 files changed, 18 insertions, 6 deletions
diff --git a/src/qmltyperegistrar/qmltyperegistrar.cpp b/src/qmltyperegistrar/qmltyperegistrar.cpp index 6fe5a20092..6154d87e99 100644 --- a/src/qmltyperegistrar/qmltyperegistrar.cpp +++ b/src/qmltyperegistrar/qmltyperegistrar.cpp @@ -49,7 +49,8 @@ struct ScopedPointerFileCloser enum RegistrationMode { NoRegistration, - ClassRegistration, + ObjectRegistration, + GadgetRegistration, NamespaceRegistration }; @@ -59,8 +60,16 @@ static RegistrationMode qmlTypeRegistrationMode(const QJsonObject &classDef) for (const QJsonValue &info: classInfos) { const QString name = info[QLatin1String("name")].toString(); if (name == QLatin1String("QML.Element")) { - return classDef[QLatin1String("namespace")].toBool() ? NamespaceRegistration - : ClassRegistration; + if (classDef[QLatin1String("object")].toBool()) + return ObjectRegistration; + if (classDef[QLatin1String("gadget")].toBool()) + return GadgetRegistration; + if (classDef[QLatin1String("namespace")].toBool()) + return NamespaceRegistration; + qWarning() << "Not registering classInfo which is neither an object, " + "nor a gadget, nor a namespace:" + << name; + break; } } return NoRegistration; @@ -295,9 +304,8 @@ int main(int argc, char **argv) QJsonObject classDef = cls.toObject(); switch (qmlTypeRegistrationMode(classDef)) { case NamespaceRegistration: - classDef.insert(QLatin1String("namespace"), true); - Q_FALLTHROUGH(); - case ClassRegistration: { + case GadgetRegistration: + case ObjectRegistration: { const QString include = metaObject[QLatin1String("inputFile")].toString(); const bool declaredInHeader = include.endsWith(QLatin1String(".h")); if (declaredInHeader) { @@ -309,6 +317,7 @@ int main(int argc, char **argv) qPrintable(classDef.value(QLatin1String("qualifiedClassName")) .toString())); } + types.append(classDef); break; } diff --git a/src/qmltyperegistrar/qmltypesclassdescription.cpp b/src/qmltyperegistrar/qmltypesclassdescription.cpp index c6279998b7..3442dc9d64 100644 --- a/src/qmltyperegistrar/qmltypesclassdescription.cpp +++ b/src/qmltyperegistrar/qmltypesclassdescription.cpp @@ -154,6 +154,9 @@ void QmlTypesClassDescription::collect(const QJsonObject *classDef, revisions.erase(end, revisions.end()); resolvedClass = classDef; + + // If it's not a QObject, it's not creatable + isCreatable = isCreatable && classDef->value(QLatin1String("object")).toBool(); } void QmlTypesClassDescription::collectAttached(const QString &attached, |