diff -r ef0373b55136 -r 758a864f9613 src/declarative/qml/qdeclarativevmemetaobject.cpp --- a/src/declarative/qml/qdeclarativevmemetaobject.cpp Fri Sep 17 08:34:18 2010 +0300 +++ b/src/declarative/qml/qdeclarativevmemetaobject.cpp Mon Oct 04 01:19:32 2010 +0300 @@ -707,11 +707,19 @@ void QDeclarativeVMEMetaObject::writeVarProperty(int id, const QVariant &value) { - if (value.userType() == QMetaType::QObjectStar) + bool needActivate = false; + if (value.userType() == QMetaType::QObjectStar) { + QObject *o = qvariant_cast(value); + needActivate = (data[id].dataType() != QMetaType::QObjectStar || data[id].asQObject() != o); data[id].setValue(qvariant_cast(value)); - else + } else { + needActivate = (data[id].dataType() != qMetaTypeId() || + data[id].asQVariant().userType() != value.userType() || + data[id].asQVariant() != value); data[id].setValue(value); - activate(object, methodOffset + id, 0); + } + if (needActivate) + activate(object, methodOffset + id, 0); } void QDeclarativeVMEMetaObject::listChanged(int id)