diff options
author | Ulf Hermann <ulf.hermann@qt.io> | 2021-06-02 08:42:51 +0200 |
---|---|---|
committer | Ulf Hermann <ulf.hermann@qt.io> | 2021-06-02 10:18:03 +0200 |
commit | 28c4d536e2bbf65d85c89efe1b64fc4e714e02bc (patch) | |
tree | 474126a7bbefc8a1cc0cd73d41288718da497e9c /src/qml/jsruntime/qv4engine.cpp | |
parent | 19b6f9591257b3a07bf1479bcc2d676e57506447 (diff) |
Allow value type conversion in metaTypeFromJS
We implicitly do the same when calling toVariant().
Change-Id: I288326125d88bc658dcaf12d3ee623e0e529bb69
Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
Diffstat (limited to 'src/qml/jsruntime/qv4engine.cpp')
-rw-r--r-- | src/qml/jsruntime/qv4engine.cpp | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/src/qml/jsruntime/qv4engine.cpp b/src/qml/jsruntime/qv4engine.cpp index 5247fda6c9..c17478c0cc 100644 --- a/src/qml/jsruntime/qv4engine.cpp +++ b/src/qml/jsruntime/qv4engine.cpp @@ -2451,9 +2451,13 @@ bool ExecutionEngine::metaTypeFromJS(const Value &value, QMetaType metaType, voi } { - const QQmlValueTypeWrapper *vtw = value.as<QQmlValueTypeWrapper>(); - if (vtw && vtw->type() == metaType) - return vtw->toGadget(data); + if (const QQmlValueTypeWrapper *vtw = value.as<QQmlValueTypeWrapper>()) { + const QMetaType valueType = vtw->type(); + if (valueType == metaType) + return vtw->toGadget(data); + if (QMetaType::canConvert(valueType, metaType)) + return QMetaType::convert(valueType, vtw->d()->gadgetPtr(), metaType, data); + } } #if 0 |