diff --git a/src/plugins/qmldesigner/designercore/instances/qmlpropertychangesnodeinstance.cpp b/src/plugins/qmldesigner/designercore/instances/qmlpropertychangesnodeinstance.cpp index ea2ea618217377635c46ba070c98ef4ac0a66c02..d08891cdefc2ad3ed7d11f76d518b2cc925fb148 100644 --- a/src/plugins/qmldesigner/designercore/instances/qmlpropertychangesnodeinstance.cpp +++ b/src/plugins/qmldesigner/designercore/instances/qmlpropertychangesnodeinstance.cpp @@ -60,12 +60,16 @@ QDeclarativeStateOperation::ActionList QmlPropertyChangesObject::actions() action.fromValue = action.property.read(); if (m_expressionHash.contains(action.specifiedProperty)) { if(m_expressionHash[action.specifiedProperty].second.isNull()) { - QDeclarativeBinding *binding = new QDeclarativeBinding(m_expressionHash[action.specifiedProperty].first, targetObject(), QDeclarativeEngine::contextForObject(targetObject()), this); - binding->setTarget(action.property); - binding->setNotifyOnValueChanged(true); - action.toBinding = binding; - action.toValue = binding->evaluate(); - m_expressionHash.insert(action.specifiedProperty, ExpressionPair(m_expressionHash[action.specifiedProperty].first, binding)); + if (targetObject()) { + QDeclarativeBinding *binding = new QDeclarativeBinding(m_expressionHash[action.specifiedProperty].first, targetObject(), QDeclarativeEngine::contextForObject(targetObject()), this); + binding->setTarget(action.property); + binding->setNotifyOnValueChanged(true); + action.toBinding = binding; + action.toValue = binding->evaluate(); + m_expressionHash.insert(action.specifiedProperty, ExpressionPair(m_expressionHash[action.specifiedProperty].first, binding)); + } else { + action.toBinding = 0; + } } else { action.toBinding = m_expressionHash[action.specifiedProperty].second.data(); action.toValue = m_expressionHash[action.specifiedProperty].second->evaluate(); @@ -92,9 +96,10 @@ void QmlPropertyChangesObject::setTargetObject(QObject *object) if (isActive()) { QDeclarativePropertyPrivate::setBinding(qmlAction.property, 0, QDeclarativePropertyPrivate::DontRemoveBinding| QDeclarativePropertyPrivate::BypassInterceptor); qmlAction.property.write(qmlAction.fromValue); + m_expressionHash[qmlAction.specifiedProperty].second.data()->destroy(); } - m_expressionHash[qmlAction.specifiedProperty].second.data()->destroy(); + qmlAction.toBinding = 0; }