diff options
Diffstat (limited to 'src/qml/qml/v8/qv8qobjectwrapper.cpp')
-rw-r--r-- | src/qml/qml/v8/qv8qobjectwrapper.cpp | 13 |
1 files changed, 6 insertions, 7 deletions
diff --git a/src/qml/qml/v8/qv8qobjectwrapper.cpp b/src/qml/qml/v8/qv8qobjectwrapper.cpp index 2329bcfc63..79f221e8bc 100644 --- a/src/qml/qml/v8/qv8qobjectwrapper.cpp +++ b/src/qml/qml/v8/qv8qobjectwrapper.cpp @@ -1412,19 +1412,19 @@ static int MatchScore(v8::Handle<v8::Value> actual, int conversionType) } } } else if (actual->IsObject()) { - v8::Handle<v8::Object> obj = v8::Handle<v8::Object>::Cast(actual); + QV4::Object *obj = actual->v4Value().asObject(); + QV8Engine *engine = obj->engine()->publicEngine->handle(); - if (QV4::VariantObject *v = obj->v4Value().asVariantObject()) { + if (QV4::VariantObject *v = obj->asVariantObject()) { if (conversionType == qMetaTypeId<QVariant>()) return 0; - QV8Engine *engine = v->engine()->publicEngine->handle(); if (engine->toVariant(actual->v4Value(), -1).userType() == conversionType) return 0; else return 10; } - if (obj->v4Value().asQObjectWrapper()) { + if (obj->asQObjectWrapper()) { switch (conversionType) { case QMetaType::QObjectStar: return 0; @@ -1433,9 +1433,8 @@ static int MatchScore(v8::Handle<v8::Value> actual, int conversionType) } } - QV8ObjectResource *r = static_cast<QV8ObjectResource *>(obj->GetExternalResource()); - if (r && r->resourceType() == QV8ObjectResource::ValueTypeType) { - if (r->engine->toVariant(actual->v4Value(), -1).userType() == conversionType) + if (QV4::QmlValueTypeWrapper *w = obj->asQmlValueTypeWrapper()) { + if (engine->toVariant(actual->v4Value(), -1).userType() == conversionType) return 0; return 10; } else if (conversionType == QMetaType::QJsonObject) { |