aboutsummaryrefslogtreecommitdiffstats
path: root/src/qmltyperegistrar/qmltypescreator.cpp
diff options
context:
space:
mode:
authorQt Forward Merge Bot <qt_forward_merge_bot@qt-project.org>2020-04-17 01:00:20 +0200
committerUlf Hermann <ulf.hermann@qt.io>2020-04-17 10:46:57 +0200
commite4707f8ae9dc198abd1460384d1573420f663a84 (patch)
tree6cae05ad48f31f13d05237f1af52e9d7dc394eb7 /src/qmltyperegistrar/qmltypescreator.cpp
parentc3fcbe73189b26e49ad8fa824b2b8e6b7db0a8f4 (diff)
parentb3eb349ddddec6967fcedfdbfc857b99f34e552a (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.cpp37
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();
}