diff options
author | Lars Knoll <lars.knoll@digia.com> | 2013-05-30 22:57:15 +0200 |
---|---|---|
committer | Simon Hausmann <simon.hausmann@digia.com> | 2013-05-31 07:05:55 +0200 |
commit | 992cf583d4c559027206ef570d623eda95a0ffa3 (patch) | |
tree | 9213d1f1f85dc4082a0780c76b0f3ff4244a351e /src/qml/qml/qqmlvaluetypewrapper.cpp | |
parent | c19817473bb617d8b4663392eaf5d2dea6c71c79 (diff) |
Get rid of v8::UserObjectComparisonCallback
Add a isEqualTo Method to the Managed's vtable, that will be
used for comparing.
Change-Id: I4d253db93851c16a57aa1412fa7142913d1744e6
Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
Diffstat (limited to 'src/qml/qml/qqmlvaluetypewrapper.cpp')
-rw-r--r-- | src/qml/qml/qqmlvaluetypewrapper.cpp | 17 |
1 files changed, 15 insertions, 2 deletions
diff --git a/src/qml/qml/qqmlvaluetypewrapper.cpp b/src/qml/qml/qqmlvaluetypewrapper.cpp index 2db3a2f865..ddc22daa5e 100644 --- a/src/qml/qml/qqmlvaluetypewrapper.cpp +++ b/src/qml/qml/qqmlvaluetypewrapper.cpp @@ -48,6 +48,7 @@ #include <private/qv4engine_p.h> #include <private/qv4functionobject_p.h> +#include <private/qv4variantobject_p.h> QT_BEGIN_NAMESPACE @@ -146,7 +147,6 @@ Value QmlValueTypeWrapper::create(QV8Engine *v8, QObject *object, int property, initProto(v4); QmlValueTypeReference *r = new (v4->memoryManager) QmlValueTypeReference(v8); - r->externalComparison = true; r->prototype = proto.value().objectValue(); r->type = type; r->object = object; r->property = property; return Value::fromObject(r); @@ -158,7 +158,6 @@ Value QmlValueTypeWrapper::create(QV8Engine *v8, const QVariant &value, QQmlValu initProto(v4); QmlValueTypeCopy *r = new (v4->memoryManager) QmlValueTypeCopy(v8); - r->externalComparison = true; r->prototype = proto.value().objectValue(); r->type = type; r->value = value; return Value::fromObject(r); @@ -190,6 +189,20 @@ void QmlValueTypeWrapper::destroy(Managed *that) static_cast<QmlValueTypeCopy *>(w)->~QmlValueTypeCopy(); } +bool QmlValueTypeWrapper::isEqualTo(Managed *m, Managed *other) +{ + QV4::QmlValueTypeWrapper *lv = m->asQmlValueTypeWrapper(); + assert(lv); + + if (QV4::VariantObject *rv = other->asVariantObject()) + return lv->isEqual(rv->data); + + if (QV4::QmlValueTypeWrapper *v = other->asQmlValueTypeWrapper()) + return lv->isEqual(v->toVariant()); + + return false; +} + bool QmlValueTypeWrapper::isEqual(const QVariant& value) { if (objectType == QmlValueTypeWrapper::Reference) { |