diff options
Diffstat (limited to 'src/declarative/qml/qdeclarativeboundsignal.cpp')
-rw-r--r-- | src/declarative/qml/qdeclarativeboundsignal.cpp | 21 |
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); |