summaryrefslogtreecommitdiffstats
path: root/src/declarative/util
diff options
context:
space:
mode:
Diffstat (limited to 'src/declarative/util')
-rw-r--r--src/declarative/util/qmlanimation.cpp6
-rw-r--r--src/declarative/util/qmlsetproperties.cpp1
-rw-r--r--src/declarative/util/qmlstate.cpp11
-rw-r--r--src/declarative/util/qmlstate.h1
-rw-r--r--src/declarative/util/qmltransitionmanager.cpp14
5 files changed, 22 insertions, 11 deletions
diff --git a/src/declarative/util/qmlanimation.cpp b/src/declarative/util/qmlanimation.cpp
index 27caf20..f3691ea 100644
--- a/src/declarative/util/qmlanimation.cpp
+++ b/src/declarative/util/qmlanimation.cpp
@@ -723,7 +723,6 @@ QmlColorAnimation::QmlColorAnimation(QObject *parent)
: QmlPropertyAnimation(parent)
{
Q_D(QmlPropertyAnimation);
- d->init();
d->interpolatorType = QMetaType::QColor;
d->interpolator = QVariantAnimationPrivate::getInterpolator(d->interpolatorType);
d->defaultToInterpolatorType = true;
@@ -1199,7 +1198,6 @@ QmlNumberAnimation::QmlNumberAnimation(QObject *parent)
: QmlPropertyAnimation(parent)
{
Q_D(QmlPropertyAnimation);
- d->init();
d->interpolatorType = QMetaType::QReal;
d->interpolator = QVariantAnimationPrivate::getInterpolator(d->interpolatorType);
}
@@ -1496,7 +1494,9 @@ QmlPropertyAnimation::~QmlPropertyAnimation()
void QmlPropertyAnimationPrivate::init()
{
Q_Q(QmlPropertyAnimation);
- va = new QmlTimeLineValueAnimator(q);
+ va = new QmlTimeLineValueAnimator;
+ QFx_setParent_noEvent(va, q);
+
va->setStartValue(QVariant(0.0f));
va->setEndValue(QVariant(1.0f));
}
diff --git a/src/declarative/util/qmlsetproperties.cpp b/src/declarative/util/qmlsetproperties.cpp
index bbbc6a9..1cd4a79 100644
--- a/src/declarative/util/qmlsetproperties.cpp
+++ b/src/declarative/util/qmlsetproperties.cpp
@@ -335,6 +335,7 @@ QmlSetProperties::ActionList QmlSetProperties::actions()
a.toValue = d->expressions.at(ii).second->value();
} else {
a.toBinding = new QmlBinding(d->expressions.at(ii).second->expression(), object(), qmlContext(this));
+ a.deletableToBinding = true;
a.toBinding->setTarget(prop);
}
diff --git a/src/declarative/util/qmlstate.cpp b/src/declarative/util/qmlstate.cpp
index b5ba909..9967486 100644
--- a/src/declarative/util/qmlstate.cpp
+++ b/src/declarative/util/qmlstate.cpp
@@ -54,14 +54,14 @@ QT_BEGIN_NAMESPACE
DEFINE_BOOL_CONFIG_OPTION(stateChangeDebug, STATECHANGE_DEBUG);
Action::Action()
-: restore(true), actionDone(false), reverseEvent(false), fromBinding(0), toBinding(0), event(0),
+: restore(true), actionDone(false), reverseEvent(false), deletableToBinding(false), fromBinding(0), toBinding(0), event(0),
specifiedObject(0)
{
}
Action::Action(QObject *target, const QString &propertyName,
const QVariant &value)
-: restore(true), actionDone(false), reverseEvent(false), toValue(value), fromBinding(0),
+: restore(true), actionDone(false), reverseEvent(false), deletableToBinding(false), toValue(value), fromBinding(0),
toBinding(0), event(0), specifiedObject(target),
specifiedProperty(propertyName)
{
@@ -413,11 +413,8 @@ void QmlState::apply(QmlStateGroup *group, QmlTransition *trans, QmlState *rever
SimpleAction r(action);
additionalReverts << r;
}
- } else {
-
- if (!found || d->revertList.at(jj).binding != action.fromBinding) {
- action.deleteFromBinding();
- }
+ } else if (d->revertList.at(jj).binding != action.fromBinding) {
+ action.deleteFromBinding();
}
}
diff --git a/src/declarative/util/qmlstate.h b/src/declarative/util/qmlstate.h
index 7c62768..9eb7aee 100644
--- a/src/declarative/util/qmlstate.h
+++ b/src/declarative/util/qmlstate.h
@@ -64,6 +64,7 @@ public:
bool restore:1;
bool actionDone:1;
bool reverseEvent:1;
+ bool deletableToBinding:1;
QmlMetaProperty property;
QVariant fromValue;
diff --git a/src/declarative/util/qmltransitionmanager.cpp b/src/declarative/util/qmltransitionmanager.cpp
index b2d9414..f04a821 100644
--- a/src/declarative/util/qmltransitionmanager.cpp
+++ b/src/declarative/util/qmltransitionmanager.cpp
@@ -239,7 +239,7 @@ void QmlTransitionManager::transition(const QList<Action> &list,
}
}
if (!transition)
- d->applyBindings(); //### merge into above foreach?
+ d->applyBindings();
}
@@ -251,6 +251,18 @@ void QmlTransitionManager::cancel()
d->transition = 0;
}
+ for(int i = 0; i < d->bindingsList.count(); ++i) {
+ Action action = d->bindingsList[i];
+ if (action.toBinding && action.deletableToBinding) {
+ action.property.setBinding(0);
+ delete action.toBinding;
+ action.toBinding = 0;
+ action.deletableToBinding = false;
+ } else if (action.event) {
+ //### what do we do here?
+ }
+
+ }
d->bindingsList.clear();
d->completeList.clear();