aboutsummaryrefslogtreecommitdiffstats
path: root/src/qml/qml/qqmlvmemetaobject.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/qml/qml/qqmlvmemetaobject.cpp')
-rw-r--r--src/qml/qml/qqmlvmemetaobject.cpp27
1 files changed, 14 insertions, 13 deletions
diff --git a/src/qml/qml/qqmlvmemetaobject.cpp b/src/qml/qml/qqmlvmemetaobject.cpp
index 64f5bfefd7..294d539e92 100644
--- a/src/qml/qml/qqmlvmemetaobject.cpp
+++ b/src/qml/qml/qqmlvmemetaobject.cpp
@@ -612,23 +612,24 @@ int QQmlVMEMetaObject::metaCall(QObject *o, QMetaObject::Call c, int _id, void *
break;
default:
{
- QV4::MemberData *md = propertiesAsMemberData();
- if (md) {
- QV4::VariantObject *v = (md->data() + id)->as<QV4::VariantObject>();
- if (v)
- QQml_valueTypeProvider()->readValueType(v->d()->data, a[0], t);
+ if (t == qMetaTypeId<QQmlListProperty<QObject> >()) {
+ const int listIndex = readPropertyAsInt(id);
+ const List *list = &listProperties.at(listIndex);
+ *reinterpret_cast<QQmlListProperty<QObject> *>(a[0]) =
+ QQmlListProperty<QObject>(object, const_cast<List *>(list),
+ list_append, list_count, list_at,
+ list_clear);
+ } else {
+ QV4::MemberData *md = propertiesAsMemberData();
+ if (md) {
+ QV4::VariantObject *v = (md->data() + id)->as<QV4::VariantObject>();
+ if (v)
+ QQml_valueTypeProvider()->readValueType(v->d()->data, a[0], t);
+ }
}
break;
}
}
- if (t == qMetaTypeId<QQmlListProperty<QObject> >()) {
- const int listIndex = readPropertyAsInt(id);
- const List *list = &listProperties.at(listIndex);
- *reinterpret_cast<QQmlListProperty<QObject> *>(a[0]) =
- QQmlListProperty<QObject>(object, const_cast<List *>(list),
- list_append, list_count, list_at,
- list_clear);
- }
} else if (c == QMetaObject::WriteProperty) {