diff options
author | Ulf Hermann <ulf.hermann@qt.io> | 2021-01-13 12:39:44 +0100 |
---|---|---|
committer | Ulf Hermann <ulf.hermann@qt.io> | 2021-01-13 14:32:40 +0100 |
commit | f1410debc7905e704b6ed16ae345e43765ef8ef5 (patch) | |
tree | 56c0acf733fff7bc08362b753bd7729421169709 /src/qml/qml/qqmlopenmetaobject.cpp | |
parent | cfe0b08b5439a27b4fdd14c29620e0492543f506 (diff) |
Add a freeze() method to QQmlPropertyMap
After freezing a QQmlPropertyMap you cannot add any more properties, but
in turn the property access is cached, and therefore faster.
Task-number: QTBUG-57792
Change-Id: I2c6d768039c3b59eb2411194e463ee0de55f8bed
Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
Diffstat (limited to 'src/qml/qml/qqmlopenmetaobject.cpp')
-rw-r--r-- | src/qml/qml/qqmlopenmetaobject.cpp | 24 |
1 files changed, 17 insertions, 7 deletions
diff --git a/src/qml/qml/qqmlopenmetaobject.cpp b/src/qml/qml/qqmlopenmetaobject.cpp index b5264fcdfc..ec2d57013f 100644 --- a/src/qml/qml/qqmlopenmetaobject.cpp +++ b/src/qml/qml/qqmlopenmetaobject.cpp @@ -172,8 +172,8 @@ void QQmlOpenMetaObjectTypePrivate::init(const QMetaObject *metaObj) class QQmlOpenMetaObjectPrivate { public: - QQmlOpenMetaObjectPrivate(QQmlOpenMetaObject *_q, bool _autoCreate, QObject *obj) - : q(_q), object(obj), autoCreate(_autoCreate) {} + QQmlOpenMetaObjectPrivate(QQmlOpenMetaObject *_q, QObject *obj) + : q(_q), object(obj) {} struct Property { private: @@ -243,12 +243,12 @@ public: QObject *object; QQmlRefPointer<QQmlOpenMetaObjectType> type; QVector<QByteArray> *deferredPropertyNames = nullptr; - bool autoCreate; + bool autoCreate = true; bool cacheProperties = false; }; -QQmlOpenMetaObject::QQmlOpenMetaObject(QObject *obj, const QMetaObject *base, bool automatic) -: d(new QQmlOpenMetaObjectPrivate(this, automatic, obj)) +QQmlOpenMetaObject::QQmlOpenMetaObject(QObject *obj, const QMetaObject *base) +: d(new QQmlOpenMetaObjectPrivate(this, obj)) { d->type.adopt(new QQmlOpenMetaObjectType(base ? base : obj->metaObject())); d->type->d->referers.insert(this); @@ -259,8 +259,8 @@ QQmlOpenMetaObject::QQmlOpenMetaObject(QObject *obj, const QMetaObject *base, bo op->metaObject = this; } -QQmlOpenMetaObject::QQmlOpenMetaObject(QObject *obj, QQmlOpenMetaObjectType *type, bool automatic) -: d(new QQmlOpenMetaObjectPrivate(this, automatic, obj)) +QQmlOpenMetaObject::QQmlOpenMetaObject(QObject *obj, QQmlOpenMetaObjectType *type) +: d(new QQmlOpenMetaObjectPrivate(this, obj)) { d->type = type; d->type->d->referers.insert(this); @@ -438,6 +438,16 @@ void QQmlOpenMetaObject::setCached(bool c) } } +bool QQmlOpenMetaObject::autoCreatesProperties() const +{ + return d->autoCreate; +} + +void QQmlOpenMetaObject::setAutoCreatesProperties(bool autoCreate) +{ + d->autoCreate = autoCreate; +} + int QQmlOpenMetaObject::createProperty(const char *name, const char *) { |