summaryrefslogtreecommitdiff
path: root/src/qtmetaobjectpublisher.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/qtmetaobjectpublisher.cpp')
-rw-r--r--src/qtmetaobjectpublisher.cpp17
1 files changed, 13 insertions, 4 deletions
diff --git a/src/qtmetaobjectpublisher.cpp b/src/qtmetaobjectpublisher.cpp
index 6d67df1..1922cd2 100644
--- a/src/qtmetaobjectpublisher.cpp
+++ b/src/qtmetaobjectpublisher.cpp
@@ -105,14 +105,23 @@ QVariantMap QtMetaObjectPublisher::classInfoForObject(QObject *object) const
qWarning("Notify signal for property '%s' has %d parameters, expected zero or one.",
prop.name(), numParams);
}
- propertyInfo.append(QString::fromLatin1(prop.notifySignal().name()));
+ // optimize: compress the common propertyChanged notification names, just send a 1
+ const QByteArray &notifySignal = prop.notifySignal().name();
+ static const QByteArray changedSuffix = QByteArrayLiteral("Changed");
+ if (notifySignal.length() == changedSuffix.length() + propertyName.length() &&
+ notifySignal.endsWith(changedSuffix) && notifySignal.startsWith(prop.name()))
+ {
+ propertyInfo.append(1);
+ } else {
+ propertyInfo.append(QString::fromLatin1(notifySignal));
+ }
} else {
if (!prop.isConstant()) {
qWarning("Property '%s'' of object '%s' has no notify signal and is not constant, "
"value updates in HTML will be broken!",
prop.name(), object->metaObject()->className());
}
- propertyInfo.append(QString());
+ propertyInfo.append(0);
}
propertyInfo.append(prop.read(object));
qtProperties.append(QVariant::fromValue(propertyInfo));
@@ -130,10 +139,10 @@ QVariantMap QtMetaObjectPublisher::classInfoForObject(QObject *object) const
// property on the client side anyways.
continue;
}
- if (method.access() == QMetaMethod::Public)
- qtMethods << name;
if (method.methodType() == QMetaMethod::Signal)
qtSignals << name;
+ else if (method.access() == QMetaMethod::Public)
+ qtMethods << name;
}
for (int i = 0; i < metaObject->enumeratorCount(); ++i) {
QMetaEnum enumerator = metaObject->enumerator(i);