aboutsummaryrefslogtreecommitdiffstats
path: root/src/qml/jsapi
diff options
context:
space:
mode:
authorFabian Kosmale <fabian.kosmale@qt.io>2023-12-12 15:44:34 +0100
committerFabian Kosmale <fabian.kosmale@qt.io>2024-02-08 10:50:50 +0100
commit683f3bf56f67ad428e24d851903e2ddf86cef796 (patch)
tree7cff212742aeca9af9b1aa757da7525fa73fd214 /src/qml/jsapi
parent15b1aaadd2be9acb337b46ff789c1ad9e18436fb (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.cpp8
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;
}
/*!