aboutsummaryrefslogtreecommitdiffstats
path: root/src/qml/qml/qqmlvaluetypewrapper.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/qml/qml/qqmlvaluetypewrapper.cpp')
-rw-r--r--src/qml/qml/qqmlvaluetypewrapper.cpp13
1 files changed, 10 insertions, 3 deletions
diff --git a/src/qml/qml/qqmlvaluetypewrapper.cpp b/src/qml/qml/qqmlvaluetypewrapper.cpp
index 8ed1169ec7..00b206f0dc 100644
--- a/src/qml/qml/qqmlvaluetypewrapper.cpp
+++ b/src/qml/qml/qqmlvaluetypewrapper.cpp
@@ -133,7 +133,7 @@ bool QQmlValueTypeReference::readReferenceValue() const
if (QQmlValueTypeFactory::isValueType(variantReferenceType)) {
QQmlPropertyCache *cache = 0;
if (const QMetaObject *mo = QQmlValueTypeFactory::metaObjectForMetaType(variantReferenceType))
- cache = QQmlEnginePrivate::get(engine())->cache(mo);
+ cache = QJSEnginePrivate::get(engine())->cache(mo);
if (d()->gadgetPtr)
QMetaType::destroy(d()->metaType, d()->gadgetPtr);
d()->gadgetPtr = 0;
@@ -177,7 +177,7 @@ ReturnedValue QQmlValueTypeWrapper::create(ExecutionEngine *engine, QObject *obj
ScopedObject proto(scope, engine->qmlExtensions()->valueTypeWrapperPrototype);
r->setPrototype(proto);
r->d()->object = object; r->d()->property = property;
- r->d()->propertyCache = QQmlEnginePrivate::get(engine)->cache(metaObject);
+ r->d()->propertyCache = QJSEnginePrivate::get(engine)->cache(metaObject);
r->d()->metaType = typeId;
r->d()->gadgetPtr = QMetaType::create(r->d()->metaType);
return r->asReturnedValue();
@@ -191,7 +191,7 @@ ReturnedValue QQmlValueTypeWrapper::create(ExecutionEngine *engine, const QVaria
Scoped<QQmlValueTypeWrapper> r(scope, engine->memoryManager->alloc<QQmlValueTypeWrapper>(engine));
ScopedObject proto(scope, engine->qmlExtensions()->valueTypeWrapperPrototype);
r->setPrototype(proto);
- r->d()->propertyCache = QQmlEnginePrivate::get(engine)->cache(metaObject);
+ r->d()->propertyCache = QJSEnginePrivate::get(engine)->cache(metaObject);
r->d()->metaType = typeId;
r->d()->gadgetPtr = QMetaType::create(r->d()->metaType);
r->d()->setValue(value);
@@ -206,6 +206,13 @@ QVariant QQmlValueTypeWrapper::toVariant() const
return d()->toVariant();
}
+void QQmlValueTypeWrapper::toGadget(void *data) const
+{
+ int typeId = d()->metaType;
+ QMetaType::destruct(typeId, data);
+ QMetaType::construct(typeId, data, d()->gadget());
+}
+
void QQmlValueTypeWrapper::destroy(Heap::Base *that)
{
Heap::QQmlValueTypeWrapper *w = static_cast<Heap::QQmlValueTypeWrapper *>(that);