diff options
author | Fabian Kosmale <fabian.kosmale@qt.io> | 2023-12-12 15:44:34 +0100 |
---|---|---|
committer | Fabian Kosmale <fabian.kosmale@qt.io> | 2024-02-08 10:50:50 +0100 |
commit | 683f3bf56f67ad428e24d851903e2ddf86cef796 (patch) | |
tree | 7cff212742aeca9af9b1aa757da7525fa73fd214 /src/qml/jsapi | |
parent | 15b1aaadd2be9acb337b46ff789c1ad9e18436fb (diff) |
QJSEngine: Correctly detect QVariant
With the introduction of QQmlVarForeign, a QVariant can now be
represented as as either a QV4::VariantObject, or as a
QQmlValueTypeWrapper wrapping a QVariant.
Fix QJSEngine::isVariant to consider the new case, too.
Pick-to: 6.7
Fixes: QTBUG-120008
Change-Id: I6aefa64c315b9ed1c7d1e214486f47556ef780fc
Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
Diffstat (limited to 'src/qml/jsapi')
-rw-r--r-- | src/qml/jsapi/qjsvalue.cpp | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/src/qml/jsapi/qjsvalue.cpp b/src/qml/jsapi/qjsvalue.cpp index f622c3fb23..e80208adc5 100644 --- a/src/qml/jsapi/qjsvalue.cpp +++ b/src/qml/jsapi/qjsvalue.cpp @@ -20,6 +20,7 @@ #include <private/qv4jscall_p.h> #include <private/qv4qobjectwrapper_p.h> #include <private/qv4urlobject_p.h> +#include <private/qqmlbuiltins_p.h> /*! \since 5.0 @@ -458,7 +459,12 @@ bool QJSValue::isCallable() const */ bool QJSValue::isVariant() const { - return QJSValuePrivate::asManagedType<QV4::VariantObject>(this); + if (QJSValuePrivate::asManagedType<QV4::VariantObject>(this)) + return true; + if (auto vt = QJSValuePrivate::asManagedType<QV4::QQmlValueTypeWrapper>(this)) + if (vt->metaObject() == &QQmlVarForeign::staticMetaObject) + return true; + return false; } /*! |