From 0d8c3504eb13ab45955cb80d7fa8062e2bf1a1a5 Mon Sep 17 00:00:00 2001 From: Michael Brasser Date: Mon, 11 May 2009 13:34:55 +1000 Subject: Apply a states binding changes even if there is no transition. --- src/declarative/util/qmlstate.cpp | 17 +++++++++++------ src/declarative/util/qmlstate_p.h | 1 + 2 files changed, 12 insertions(+), 6 deletions(-) diff --git a/src/declarative/util/qmlstate.cpp b/src/declarative/util/qmlstate.cpp index cd33f5e..194cc1b 100644 --- a/src/declarative/util/qmlstate.cpp +++ b/src/declarative/util/qmlstate.cpp @@ -247,17 +247,20 @@ static void dump(const QmlStateOperation::ActionList &list) } #endif -void QmlStatePrivate::complete() +void QmlStatePrivate::applyBindings() { - Q_Q(QmlState); - //apply bindings (now that all transitions are complete) - ////////////////////////////////////////////////////////// foreach(const Action &action, bindingsList) { if (action.bv && !action.toBinding.isEmpty()) { action.bv->setExpression(action.toBinding); } } - ////////////////////////////////////////////////////////// +} + +void QmlStatePrivate::complete() +{ + Q_Q(QmlState); + //apply bindings (now that all transitions are complete) + applyBindings(); for (int ii = 0; ii < reverting.count(); ++ii) { for (int jj = 0; jj < revertList.count(); ++jj) { @@ -369,7 +372,7 @@ void QmlState::apply(QmlStateGroup *group, QmlTransition *trans, QmlState *rever a.toValue = d->revertList.at(ii).value; a.toBinding = d->revertList.at(ii).binding; if (!a.toBinding.isEmpty()) { - a.fromBinding = d->revertList.at(ii).bv->expression(); //### relies on clearExpression not clearing string + a.fromBinding = d->revertList.at(ii).bv->expression(); a.bv = d->revertList.at(ii).bv; } applyList << a; @@ -456,6 +459,8 @@ void QmlState::apply(QmlStateGroup *group, QmlTransition *trans, QmlState *rever else action.property.write(action.toValue); } + if (!trans) + d->applyBindings(); //### merge into above foreach? } QML_DEFINE_TYPE(QmlStateOperation,StateOperation); diff --git a/src/declarative/util/qmlstate_p.h b/src/declarative/util/qmlstate_p.h index 20d1c1a..28e1781 100644 --- a/src/declarative/util/qmlstate_p.h +++ b/src/declarative/util/qmlstate_p.h @@ -69,6 +69,7 @@ public: QmlStateGroup *group; QmlStateOperation::ActionList generateActionList(QmlStateGroup *) const; + void applyBindings(); void complete(); }; -- cgit v0.12