diff options
author | Qt Forward Merge Bot <qt_forward_merge_bot@qt-project.org> | 2020-04-17 01:00:20 +0200 |
---|---|---|
committer | Ulf Hermann <ulf.hermann@qt.io> | 2020-04-17 10:46:57 +0200 |
commit | e4707f8ae9dc198abd1460384d1573420f663a84 (patch) | |
tree | 6cae05ad48f31f13d05237f1af52e9d7dc394eb7 /src/qmltyperegistrar/qmltypescreator.cpp | |
parent | c3fcbe73189b26e49ad8fa824b2b8e6b7db0a8f4 (diff) | |
parent | b3eb349ddddec6967fcedfdbfc857b99f34e552a (diff) |
Merge remote-tracking branch 'origin/5.15' into dev
Conflicts:
src/qmltyperegistrar/qmltypesclassdescription.cpp
src/quick/items/qquickrendertarget.h
Change-Id: I9e24d2252a35b8e74af89ad72af796df658167ca
Diffstat (limited to 'src/qmltyperegistrar/qmltypescreator.cpp')
-rw-r--r-- | src/qmltyperegistrar/qmltypescreator.cpp | 37 |
1 files changed, 29 insertions, 8 deletions
diff --git a/src/qmltyperegistrar/qmltypescreator.cpp b/src/qmltyperegistrar/qmltypescreator.cpp index d1378d809d..1bccbc36d8 100644 --- a/src/qmltyperegistrar/qmltypescreator.cpp +++ b/src/qmltyperegistrar/qmltypescreator.cpp @@ -214,11 +214,30 @@ void QmlTypesCreator::writeEnums(const QJsonArray &enums) m_qml.writeStartObject(QLatin1String("Enum")); m_qml.writeScriptBinding(QLatin1String("name"), enquote(obj.value(QLatin1String("name")).toString())); + auto alias = obj.find(QLatin1String("alias")); + if (alias != obj.end()) + m_qml.writeScriptBinding(alias.key(), enquote(alias->toString())); + auto isFlag = obj.find(QLatin1String("isFlag")); + if (isFlag != obj.end() && isFlag->toBool()) + m_qml.writeBooleanBinding(isFlag.key(), true); m_qml.writeArrayBinding(QLatin1String("values"), valueList); m_qml.writeEndObject(); } } +static QJsonArray members(const QJsonObject *classDef, const QJsonObject *origClassDef, const QString &key) +{ + QJsonArray classDefMembers = classDef->value(key).toArray(); + + if (classDef != origClassDef) { + const QJsonArray origClassDefMembers = origClassDef->value(key).toArray(); + for (const auto &member : origClassDefMembers) + classDefMembers.append(member); + } + + return classDefMembers; +} + void QmlTypesCreator::writeComponents() { const QLatin1String nameKey("name"); @@ -254,15 +273,15 @@ void QmlTypesCreator::writeComponents() writeClassProperties(collector); const QJsonObject *classDef = collector.resolvedClass; - writeEnums(classDef->value(enumsKey).toArray()); + writeEnums(members(classDef, &component, enumsKey)); QSet<QString> notifySignals; - writeProperties(classDef->value(propertiesKey).toArray(), notifySignals); + writeProperties(members(classDef, &component, propertiesKey), notifySignals); if (collector.isRootClass) { // Hide destroyed() signals - QJsonArray componentSignals = classDef->value(signalsKey).toArray(); + QJsonArray componentSignals = members(classDef, &component, signalsKey); for (auto it = componentSignals.begin(); it != componentSignals.end();) { if (it->toObject().value(nameKey).toString() == destroyedName) it = componentSignals.erase(it); @@ -272,8 +291,10 @@ void QmlTypesCreator::writeComponents() writeMethods(componentSignals, signalElement, notifySignals); // Hide deleteLater() methods - QJsonArray componentMethods = classDef->value(methodsKey).toArray() - + classDef->value(slotsKey).toArray(); + QJsonArray componentMethods = members(classDef, &component, methodsKey); + const QJsonArray componentSlots = members(classDef, &component, slotsKey); + for (const QJsonValue &componentSlot : componentSlots) + componentMethods.append(componentSlot); for (auto it = componentMethods.begin(); it != componentMethods.end();) { if (it->toObject().value(nameKey).toString() == deleteLaterName) it = componentMethods.erase(it); @@ -307,9 +328,9 @@ void QmlTypesCreator::writeComponents() writeMethods(componentMethods, methodElement); } else { - writeMethods(classDef->value(signalsKey).toArray(), signalElement, notifySignals); - writeMethods(classDef->value(slotsKey).toArray(), methodElement); - writeMethods(classDef->value(methodsKey).toArray(), methodElement); + writeMethods(members(classDef, &component, signalsKey), signalElement, notifySignals); + writeMethods(members(classDef, &component, slotsKey), methodElement); + writeMethods(members(classDef, &component, methodsKey), methodElement); } m_qml.writeEndObject(); } |