diff options
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 |
