diff options
author | Andrei Golubev <andrei.golubev@qt.io> | 2021-06-04 12:19:54 +0200 |
---|---|---|
committer | Andrei Golubev <andrei.golubev@qt.io> | 2021-06-07 13:53:08 +0200 |
commit | 4b6655bf98467775f117e3b0edab4731551dbae5 (patch) | |
tree | f5641f62f1289345b68f6cfa3740c94118711705 /src | |
parent | 02a5ee8a1539f486f5641e4282cc141ee11c66fb (diff) |
QQmlBinding: provide setTarget overload without QQmlPropertyData
Similarly to create(), setTarget() also accepts QQmlPropertyData which
is a bit too much for the object creation compiler case. Providing
minimalistic API instead allows not to construct QQmlPropertyData when
QMetaProperty is available
Related to 06893b68c6b1f70cb7ff255db1fa9d14697403fa.
Change-Id: I9a54dbdf6b7cddeeda995558a2539254c26a9c6d
Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
Reviewed-by: Maximilian Goldstein <max.goldstein@qt.io>
Diffstat (limited to 'src')
-rw-r--r-- | src/qml/qml/qqmlbinding.cpp | 10 | ||||
-rw-r--r-- | src/qml/qml/qqmlbinding_p.h | 1 |
2 files changed, 8 insertions, 3 deletions
diff --git a/src/qml/qml/qqmlbinding.cpp b/src/qml/qml/qqmlbinding.cpp index a0025d43d7..2fdd31e671 100644 --- a/src/qml/qml/qqmlbinding.cpp +++ b/src/qml/qml/qqmlbinding.cpp @@ -667,6 +667,12 @@ void QQmlBinding::setTarget(const QQmlProperty &prop) bool QQmlBinding::setTarget(QObject *object, const QQmlPropertyData &core, const QQmlPropertyData *valueType) { + return setTarget(object, core.coreIndex(), core.isAlias(), + valueType ? valueType->coreIndex() : -1); +} + +bool QQmlBinding::setTarget(QObject *object, int coreIndex, bool coreIsAlias, int valueTypeIndex) +{ m_target = object; if (!object) { @@ -674,9 +680,7 @@ bool QQmlBinding::setTarget(QObject *object, const QQmlPropertyData &core, const return false; } - int coreIndex = core.coreIndex(); - int valueTypeIndex = valueType ? valueType->coreIndex() : -1; - for (bool isAlias = core.isAlias(); isAlias; ) { + for (bool isAlias = coreIsAlias; isAlias;) { QQmlVMEMetaObject *vme = QQmlVMEMetaObject::getForProperty(object, coreIndex); int aValueTypeIndex; diff --git a/src/qml/qml/qqmlbinding_p.h b/src/qml/qml/qqmlbinding_p.h index 73bc0a03c8..4e824fff03 100644 --- a/src/qml/qml/qqmlbinding_p.h +++ b/src/qml/qml/qqmlbinding_p.h @@ -99,6 +99,7 @@ public: void setTarget(const QQmlProperty &); bool setTarget(QObject *, const QQmlPropertyData &, const QQmlPropertyData *valueType); + bool setTarget(QObject *, int coreIndex, bool coreIsAlias, int valueTypeIndex); void refresh() override; |