diff options
author | Ulf Hermann <ulf.hermann@qt.io> | 2022-11-15 11:53:21 +0100 |
---|---|---|
committer | Ulf Hermann <ulf.hermann@qt.io> | 2022-11-22 16:17:21 +0100 |
commit | 522fc6e6b63e6a62436b742ee4e146ec8a1929f6 (patch) | |
tree | 7cfc5f618ebba319146ad827ea9c28ed74ea587c /src/qml/jsruntime/qv4variantobject.cpp | |
parent | 0925c51c5988bee7ee96944de2d857b2132ebe65 (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.cpp | 12 |
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; } } |