aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorAndrei Golubev <andrei.golubev@qt.io>2021-06-04 12:19:54 +0200
committerAndrei Golubev <andrei.golubev@qt.io>2021-06-07 13:53:08 +0200
commit4b6655bf98467775f117e3b0edab4731551dbae5 (patch)
treef5641f62f1289345b68f6cfa3740c94118711705 /src
parent02a5ee8a1539f486f5641e4282cc141ee11c66fb (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.cpp10
-rw-r--r--src/qml/qml/qqmlbinding_p.h1
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;