aboutsummaryrefslogtreecommitdiffstats
path: root/src/declarative/qml/qdeclarativeboundsignal.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/declarative/qml/qdeclarativeboundsignal.cpp')
-rw-r--r--src/declarative/qml/qdeclarativeboundsignal.cpp21
1 files changed, 7 insertions, 14 deletions
diff --git a/src/declarative/qml/qdeclarativeboundsignal.cpp b/src/declarative/qml/qdeclarativeboundsignal.cpp
index 6bbbb243fc..8c0c0b1519 100644
--- a/src/declarative/qml/qdeclarativeboundsignal.cpp
+++ b/src/declarative/qml/qdeclarativeboundsignal.cpp
@@ -252,15 +252,9 @@ QDeclarativeBoundSignalParameters::QDeclarativeBoundSignalParameters(const QMeta
}
}
}
- if (QDeclarativeMetaType::canCopy(t)) {
- types[ii] = t;
- QMetaPropertyBuilder prop = mob.addProperty(name, propType);
- prop.setWritable(false);
- } else {
- types[ii] = 0x80000000 | t;
- QMetaPropertyBuilder prop = mob.addProperty(name, "QVariant");
- prop.setWritable(false);
- }
+ types[ii] = t;
+ QMetaPropertyBuilder prop = mob.addProperty(name, propType);
+ prop.setWritable(false);
}
}
myMetaObject = mob.toMetaObject();
@@ -291,11 +285,10 @@ int QDeclarativeBoundSignalParameters::metaCall(QMetaObject::Call c, int id, voi
return -1;
if (c == QMetaObject::ReadProperty && id >= 1) {
- if (types[id - 1] & 0x80000000) {
- *((QVariant *)a[0]) = QVariant(types[id - 1] & 0x7FFFFFFF, values[id]);
- } else {
- QDeclarativeMetaType::copy(types[id - 1], a[0], values[id]);
- }
+ int t = types[id - 1];
+ void *p = a[0];
+ QMetaType::destruct(t, p);
+ QMetaType::construct(t, p, values[id]);
return -1;
} else {
return qt_metacall(c, id, a);