summaryrefslogtreecommitdiffstats
path: root/src/declarative
diff options
context:
space:
mode:
authorMichael Brasser <michael.brasser@nokia.com>2009-05-11 03:34:55 (GMT)
committerMichael Brasser <michael.brasser@nokia.com>2009-05-11 03:34:55 (GMT)
commit0d8c3504eb13ab45955cb80d7fa8062e2bf1a1a5 (patch)
treef63f5df607d34fb0b98d5a23d28a39e19b79a568 /src/declarative
parent62ca28e8bfd469a227f7099eb0c2e76b0b2cb2e8 (diff)
downloadQt-0d8c3504eb13ab45955cb80d7fa8062e2bf1a1a5.zip
Qt-0d8c3504eb13ab45955cb80d7fa8062e2bf1a1a5.tar.gz
Qt-0d8c3504eb13ab45955cb80d7fa8062e2bf1a1a5.tar.bz2
Apply a states binding changes even if there is no transition.
Diffstat (limited to 'src/declarative')
-rw-r--r--src/declarative/util/qmlstate.cpp17
-rw-r--r--src/declarative/util/qmlstate_p.h1
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();
};