aboutsummaryrefslogtreecommitdiffstats
path: root/src/qml/jsruntime/qv4variantobject.cpp
diff options
context:
space:
mode:
authorUlf Hermann <ulf.hermann@qt.io>2022-11-15 11:53:21 +0100
committerUlf Hermann <ulf.hermann@qt.io>2022-11-22 16:17:21 +0100
commit522fc6e6b63e6a62436b742ee4e146ec8a1929f6 (patch)
tree7cfc5f618ebba319146ad827ea9c28ed74ea587c /src/qml/jsruntime/qv4variantobject.cpp
parent0925c51c5988bee7ee96944de2d857b2132ebe65 (diff)
QML: Try QMetaType conversion in VariantObject's valueOf()
Since we're explicitly dealing with a QVariant here, the metatype conversion is adequate. We do the same already for toString(). Change-Id: I38c17b40da73ff0f0274e7d65b462eda1af2235a Reviewed-by: Semih Yavuz <semih.yavuz@qt.io> Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
Diffstat (limited to 'src/qml/jsruntime/qv4variantobject.cpp')
-rw-r--r--src/qml/jsruntime/qv4variantobject.cpp12
1 files changed, 11 insertions, 1 deletions
diff --git a/src/qml/jsruntime/qv4variantobject.cpp b/src/qml/jsruntime/qv4variantobject.cpp
index 94f95ce813..ccea9cac2a 100644
--- a/src/qml/jsruntime/qv4variantobject.cpp
+++ b/src/qml/jsruntime/qv4variantobject.cpp
@@ -131,7 +131,17 @@ ReturnedValue VariantPrototype::method_valueOf(const FunctionObject *b, const Va
return Encode(v.toBool());
default:
if (QMetaType(v.metaType()).flags() & QMetaType::IsEnumeration)
- RETURN_RESULT(Encode(v.toInt()));
+ return Encode(v.toInt());
+ if (v.canConvert<double>())
+ return Encode(v.toDouble());
+ if (v.canConvert<int>())
+ return Encode(v.toInt());
+ if (v.canConvert<uint>())
+ return Encode(v.toUInt());
+ if (v.canConvert<bool>())
+ return Encode(v.toBool());
+ if (v.canConvert<QString>())
+ return Encode(b->engine()->newString(v.toString()));
break;
}
}