From 51694e7b5b8feb466e3760ca46bd29c14de7590e Mon Sep 17 00:00:00 2001 From: Ulf Hermann Date: Fri, 22 Oct 2021 08:14:28 +0200 Subject: Make QQmlBind::value a QVariant again This partially reverts commit 00f903f3b4cd46ddf8361876401e5405030f97f1. We don't need the QJSValue to protect against magic conversions anymore since magic conversions have been removed in commit 1b7a098803a43355abf62e099267d4a122645e07. Change-Id: I3e60d8562d409144cdb921060c2736b1f8278e2b Reviewed-by: Fabian Kosmale Reviewed-by: Andrei Golubev --- src/qml/types/qqmlbind.cpp | 13 +++++++++---- src/qml/types/qqmlbind_p.h | 6 +++--- 2 files changed, 12 insertions(+), 7 deletions(-) (limited to 'src/qml/types') diff --git a/src/qml/types/qqmlbind.cpp b/src/qml/types/qqmlbind.cpp index 5c5bbefb43..b8adcb1d2f 100644 --- a/src/qml/types/qqmlbind.cpp +++ b/src/qml/types/qqmlbind.cpp @@ -82,7 +82,12 @@ public: QQmlNullableValue when; QPointer obj; QString propName; - QQmlNullableValue value; + + // An invalid QVariant has special semantics that you may explicitly want when writing the + // value. Therefore we need to denote "is not set" in a different way. We do this by wrapping + // the value in QQmlNullableValue. + QQmlNullableValue value; + QQmlProperty prop; QQmlAnyBinding prevBind; QV4::PersistentValue v4Value; @@ -296,13 +301,13 @@ void QQmlBind::setProperty(const QString &p) The value to be set on the target object and property. This can be a constant (which isn't very useful), or a bound expression. */ -QJSValue QQmlBind::value() const +QVariant QQmlBind::value() const { Q_D(const QQmlBind); return d->value.value; } -void QQmlBind::setValue(const QJSValue &v) +void QQmlBind::setValue(const QVariant &v) { Q_D(QQmlBind); d->value = v; @@ -512,7 +517,7 @@ void QQmlBind::eval() } d->writingProperty = true; - d->prop.write(d->value.value.toVariant()); + d->prop.write(d->value.value); d->writingProperty = false; } diff --git a/src/qml/types/qqmlbind_p.h b/src/qml/types/qqmlbind_p.h index 63e8e8b92a..e0f70f75c7 100644 --- a/src/qml/types/qqmlbind_p.h +++ b/src/qml/types/qqmlbind_p.h @@ -76,7 +76,7 @@ private: Q_INTERFACES(QQmlPropertyValueSource) Q_PROPERTY(QObject *target READ object WRITE setObject) Q_PROPERTY(QString property READ property WRITE setProperty) - Q_PROPERTY(QJSValue value READ value WRITE setValue) + Q_PROPERTY(QVariant value READ value WRITE setValue) Q_PROPERTY(bool when READ when WRITE setWhen) Q_PROPERTY(bool delayed READ delayed WRITE setDelayed REVISION(2, 8)) Q_PROPERTY(RestorationMode restoreMode READ restoreMode WRITE setRestoreMode @@ -97,8 +97,8 @@ public: QString property() const; void setProperty(const QString &); - QJSValue value() const; - void setValue(const QJSValue &); + QVariant value() const; + void setValue(const QVariant &); bool delayed() const; void setDelayed(bool); -- cgit v1.2.3