aboutsummaryrefslogtreecommitdiffstats
path: root/src/qml/qml/qqmlvaluetypewrapper.cpp
diff options
context:
space:
mode:
authorLars Knoll <lars.knoll@digia.com>2013-05-30 22:57:15 +0200
committerSimon Hausmann <simon.hausmann@digia.com>2013-05-31 07:05:55 +0200
commit992cf583d4c559027206ef570d623eda95a0ffa3 (patch)
tree9213d1f1f85dc4082a0780c76b0f3ff4244a351e /src/qml/qml/qqmlvaluetypewrapper.cpp
parentc19817473bb617d8b4663392eaf5d2dea6c71c79 (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.cpp17
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) {