Revertlist for states are now skipped if the state is destroying.

Task-Number: BAUHAUS-636
Reviewed-by: kkoehne
This commit is contained in:
Marco Bubke
2010-04-26 19:16:06 +02:00
committed by Kai Koehne
parent edb13d3381
commit bc26b917b9

View File

@@ -252,7 +252,7 @@ QDeclarativeStateGroup *QmlPropertyChangesObject::stateGroup() const
QDeclarativeStatePrivate *QmlPropertyChangesObject::statePrivate() const
{
if (!parent())
if (!parent() || QObjectPrivate::get(parent())->wasDeleted)
return 0;
Q_ASSERT(qobject_cast<QDeclarativeState*>(parent()));
@@ -350,12 +350,13 @@ void QmlPropertyChangesObject::removeFromStateRevertList()
while(simpleActionIterator.hasNext()) {
QDeclarativeSimpleAction &simpleAction = simpleActionIterator.next();
if (simpleAction.specifiedObject == targetObject()) {
Q_ASSERT(simpleAction.property.isValid());
if (simpleAction.binding) {
QDeclarativePropertyPrivate::setBinding(simpleAction.property, simpleAction.binding);
} else if (simpleAction.value.isValid()) {
QDeclarativePropertyPrivate::setBinding(simpleAction.property, 0);
simpleAction.property.write(simpleAction.value);
if (simpleAction.property.isValid()) {
if (simpleAction.binding) {
QDeclarativePropertyPrivate::setBinding(simpleAction.property, simpleAction.binding);
} else if (simpleAction.value.isValid()) {
QDeclarativePropertyPrivate::setBinding(simpleAction.property, 0);
simpleAction.property.write(simpleAction.value);
}
}
simpleActionIterator.remove();
}