diff options
Diffstat (limited to 'src/qml/qml/qqmlvaluetype_p.h')
-rw-r--r-- | src/qml/qml/qqmlvaluetype_p.h | 38 |
1 files changed, 22 insertions, 16 deletions
diff --git a/src/qml/qml/qqmlvaluetype_p.h b/src/qml/qml/qqmlvaluetype_p.h index 6b7df3f1b9..5376130b0f 100644 --- a/src/qml/qml/qqmlvaluetype_p.h +++ b/src/qml/qml/qqmlvaluetype_p.h @@ -34,18 +34,20 @@ QT_BEGIN_NAMESPACE class Q_QML_PRIVATE_EXPORT QQmlValueType : public QDynamicMetaObjectData { public: - QQmlValueType() : metaType(QMetaType::UnknownType) {} - QQmlValueType(QMetaType type, const QMetaObject *metaObject); + QQmlValueType() = default; + QQmlValueType(QMetaType type, const QMetaObject *staticMetaObject) + : m_metaType(type), m_staticMetaObject(staticMetaObject) + {} ~QQmlValueType(); - void *create() const { return metaType.create(); } - void destroy(void *gadgetPtr) const { metaType.destroy(gadgetPtr); } + void *create() const { return m_metaType.create(); } + void destroy(void *gadgetPtr) const { m_metaType.destroy(gadgetPtr); } - void construct(void *gadgetPtr, const void *copy) const { metaType.construct(gadgetPtr, copy); } - void destruct(void *gadgetPtr) const { metaType.destruct(gadgetPtr); } + void construct(void *gadgetPtr, const void *copy) const { m_metaType.construct(gadgetPtr, copy); } + void destruct(void *gadgetPtr) const { m_metaType.destruct(gadgetPtr); } - int metaTypeId() const { return metaType.id(); } - const QMetaObject *metaObject() const { return dynamicMetaObject; } + QMetaType metaType() const { return m_metaType; } + const QMetaObject *staticMetaObject() const { return m_staticMetaObject; } // ---- dynamic meta object data interface QMetaObject *toDynamicMetaObject(QObject *) override; @@ -53,9 +55,10 @@ public: int metaCall(QObject *obj, QMetaObject::Call type, int _id, void **argv) override; // ---- -public: - QMetaType metaType; - QMetaObject *dynamicMetaObject = nullptr; +private: + QMetaType m_metaType; + const QMetaObject *m_staticMetaObject = nullptr; + QMetaObject *m_dynamicMetaObject = nullptr; }; class Q_QML_PRIVATE_EXPORT QQmlGadgetPtrWrapper : public QObject @@ -68,14 +71,18 @@ public: ~QQmlGadgetPtrWrapper(); void read(QObject *obj, int idx); - void write(QObject *obj, int idx, QQmlPropertyData::WriteFlags flags); - QVariant value(); + void write(QObject *obj, int idx, QQmlPropertyData::WriteFlags flags) const; + QVariant value() const; void setValue(const QVariant &value); - int metaTypeId() const { return valueType()->metaTypeId(); } + QMetaType metaType() const { return valueType()->metaType(); } int metaCall(QMetaObject::Call type, int id, void **argv); - QMetaProperty property(int index) { return valueType()->metaObject()->property(index); } + QMetaProperty property(int index) const + { + return valueType()->staticMetaObject()->property(index); + } + QVariant readOnGadget(const QMetaProperty &property) const { return property.readOnGadget(m_gadgetPtr); @@ -88,7 +95,6 @@ public: private: const QQmlValueType *valueType() const; - void *m_gadgetPtr = nullptr; }; |