diff options
author | Lars Knoll <lars.knoll@qt.io> | 2019-04-11 16:16:37 +0200 |
---|---|---|
committer | Fabian Kosmale <fabian.kosmale@qt.io> | 2020-06-11 19:39:57 +0200 |
commit | 03107d0ccd4bed91b13f05c5ab36776e054dde8f (patch) | |
tree | 503d824a8468f73684297182f66e2641995a0997 /src | |
parent | d0689ec867244a25635fb9504f2e6ff6e5c4a77b (diff) |
Add some support to flag alias properties
This is required if we want to be able to get rid of the property
cache.
Also reserve a flag for var properties, in case it turns out that we
need to keep the distinction between var and QVariant properties in QML.
Change-Id: I55c2191adcc2d94bd8f148216e26423defaa900f
Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
Diffstat (limited to 'src')
-rw-r--r-- | src/corelib/kernel/qmetaobject.cpp | 14 | ||||
-rw-r--r-- | src/corelib/kernel/qmetaobject.h | 1 | ||||
-rw-r--r-- | src/corelib/kernel/qmetaobject_p.h | 2 | ||||
-rw-r--r-- | src/corelib/kernel/qmetaobjectbuilder.cpp | 23 | ||||
-rw-r--r-- | src/corelib/kernel/qmetaobjectbuilder_p.h | 2 |
5 files changed, 42 insertions, 0 deletions
diff --git a/src/corelib/kernel/qmetaobject.cpp b/src/corelib/kernel/qmetaobject.cpp index add1f3b86e..a94c0c7d5f 100644 --- a/src/corelib/kernel/qmetaobject.cpp +++ b/src/corelib/kernel/qmetaobject.cpp @@ -3033,6 +3033,20 @@ bool QMetaProperty::hasStdCppSet() const /*! \internal + + Returns \c true if the property is an alias. + This is for instance true for a property declared in QML + as 'property alias'. +*/ +bool QMetaProperty::isAlias() const +{ + if (!mobj) + return false; + return (data.flags() & Alias); +} + +/*! + \internal Executes metacall with QMetaObject::RegisterPropertyMetaType flag. Returns id of registered type or QMetaType::UnknownType if a type could not be registered for any reason. diff --git a/src/corelib/kernel/qmetaobject.h b/src/corelib/kernel/qmetaobject.h index e9290e0844..474e4da0f1 100644 --- a/src/corelib/kernel/qmetaobject.h +++ b/src/corelib/kernel/qmetaobject.h @@ -314,6 +314,7 @@ public: bool resetOnGadget(void *gadget) const; bool hasStdCppSet() const; + bool isAlias() const; inline bool isValid() const { return isReadable(); } inline const QMetaObject *enclosingMetaObject() const { return mobj; } diff --git a/src/corelib/kernel/qmetaobject_p.h b/src/corelib/kernel/qmetaobject_p.h index 79d090cc4b..02ede4d376 100644 --- a/src/corelib/kernel/qmetaobject_p.h +++ b/src/corelib/kernel/qmetaobject_p.h @@ -71,6 +71,8 @@ enum PropertyFlags { Writable = 0x00000002, Resettable = 0x00000004, EnumOrFlag = 0x00000008, + Alias = 0x00000010, + //Reserved for future usage = 0x00000020, StdCppSet = 0x00000100, Constant = 0x00000400, Final = 0x00000800, diff --git a/src/corelib/kernel/qmetaobjectbuilder.cpp b/src/corelib/kernel/qmetaobjectbuilder.cpp index 0f778af644..204ba8f51b 100644 --- a/src/corelib/kernel/qmetaobjectbuilder.cpp +++ b/src/corelib/kernel/qmetaobjectbuilder.cpp @@ -2368,6 +2368,19 @@ bool QMetaPropertyBuilder::isFinal() const } /*! + * Returns \c true if the property is an alias. + * The default value is false + */ +bool QMetaPropertyBuilder::isAlias() const +{ + QMetaPropertyBuilderPrivate *d = d_func(); + if (d) + return d->flag(Alias); + else + return false; +} + +/*! Sets this property to readable if \a value is true. \sa isReadable(), setWritable() @@ -2503,6 +2516,16 @@ void QMetaPropertyBuilder::setFinal(bool value) } /*! + Sets the \c ALIAS flag on this property to \a value + */ +void QMetaPropertyBuilder::setAlias(bool value) +{ + QMetaPropertyBuilderPrivate *d = d_func(); + if (d) + d->setFlag(Alias, value); +} + +/*! Returns the revision of this property. \sa setRevision() diff --git a/src/corelib/kernel/qmetaobjectbuilder_p.h b/src/corelib/kernel/qmetaobjectbuilder_p.h index 974fbd4a64..a473e68cec 100644 --- a/src/corelib/kernel/qmetaobjectbuilder_p.h +++ b/src/corelib/kernel/qmetaobjectbuilder_p.h @@ -262,6 +262,7 @@ public: bool isEnumOrFlag() const; bool isConstant() const; bool isFinal() const; + bool isAlias() const; void setReadable(bool value); void setWritable(bool value); @@ -274,6 +275,7 @@ public: void setEnumOrFlag(bool value); void setConstant(bool value); void setFinal(bool value); + void setAlias(bool value); int revision() const; void setRevision(int revision); |