summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--doc/src/declarative/elements.qdoc1
-rw-r--r--src/declarative/util/qdeclarativeanimation.cpp95
-rw-r--r--src/declarative/util/qdeclarativeanimation_p.h21
-rw-r--r--src/declarative/util/qdeclarativeanimation_p_p.h13
-rw-r--r--src/declarative/util/qdeclarativestate.cpp62
-rw-r--r--src/declarative/util/qdeclarativestate_p.h8
-rw-r--r--src/declarative/util/qdeclarativestateoperations.cpp244
-rw-r--r--src/declarative/util/qdeclarativestateoperations_p.h9
-rw-r--r--src/declarative/util/qdeclarativetransitionmanager.cpp26
-rw-r--r--src/declarative/util/qdeclarativeutilmodule.cpp1
-rw-r--r--tests/auto/declarative/visual/animation/parentAnimation/parentAnimation.qml2
-rw-r--r--tests/auto/declarative/visual/animation/reanchor/data/reanchor.0.pngbin622 -> 637 bytes
-rw-r--r--tests/auto/declarative/visual/animation/reanchor/data/reanchor.1.pngbin626 -> 642 bytes
-rw-r--r--tests/auto/declarative/visual/animation/reanchor/data/reanchor.2.pngbin622 -> 637 bytes
-rw-r--r--tests/auto/declarative/visual/animation/reanchor/data/reanchor.3.pngbin622 -> 637 bytes
-rw-r--r--tests/auto/declarative/visual/animation/reanchor/data/reanchor.4.pngbin632 -> 647 bytes
-rw-r--r--tests/auto/declarative/visual/animation/reanchor/data/reanchor.5.pngbin622 -> 637 bytes
-rw-r--r--tests/auto/declarative/visual/animation/reanchor/data/reanchor.6.pngbin622 -> 637 bytes
-rw-r--r--tests/auto/declarative/visual/animation/reanchor/data/reanchor.7.pngbin622 -> 637 bytes
-rw-r--r--tests/auto/declarative/visual/animation/reanchor/data/reanchor.8.pngbin634 -> 642 bytes
-rw-r--r--tests/auto/declarative/visual/animation/reanchor/data/reanchor.qml366
-rw-r--r--tests/auto/declarative/visual/animation/reanchor/reanchor.qml2
22 files changed, 545 insertions, 305 deletions
diff --git a/doc/src/declarative/elements.qdoc b/doc/src/declarative/elements.qdoc
index 67aadcf..0d7fe3b 100644
--- a/doc/src/declarative/elements.qdoc
+++ b/doc/src/declarative/elements.qdoc
@@ -76,6 +76,7 @@ The following table lists the QML elements provided by the Qt Declarative module
\o \l ParallelAnimation
\o \l PauseAnimation
\o \l ParentAnimation
+\o \l AnchorAnimation
\o \l PropertyAction
\o \l ParentAction
\o \l ScriptAction
diff --git a/src/declarative/util/qdeclarativeanimation.cpp b/src/declarative/util/qdeclarativeanimation.cpp
index 20449d7..170b455 100644
--- a/src/declarative/util/qdeclarativeanimation.cpp
+++ b/src/declarative/util/qdeclarativeanimation.cpp
@@ -2743,4 +2743,99 @@ QAbstractAnimation *QDeclarativeParentAnimation::qtAnimation()
return d->topLevelGroup;
}
+/*!
+ \qmlclass AnchorAnimation QDeclarativeAnchorAnimation
+ \since 4.7
+ \inherits Animation
+ \brief The AnchorAnimation element allows you to animate anchor changes.
+
+ AnchorAnimation will animated any changes specified by a state's AnchorChanges.
+ In the following snippet we animate the addition of a right anchor to our item.
+ \qml
+ Item {
+ id: myItem
+ width: 100
+ }
+ ...
+ State {
+ AnchorChanges {
+ target: myItem
+ anchors.right: container.right
+ }
+ }
+ ...
+ Transition {
+ //smoothly reanchor myItem and move into new position
+ AnchorAnimation {}
+ }
+ \endqml
+
+ \sa AnchorChanges
+*/
+
+QDeclarativeAnchorAnimation::QDeclarativeAnchorAnimation(QObject *parent)
+: QDeclarativeAbstractAnimation(*(new QDeclarativeAnchorAnimationPrivate), parent)
+{
+ Q_D(QDeclarativeAnchorAnimation);
+ d->va = new QDeclarativeBulkValueAnimator;
+ QDeclarative_setParent_noEvent(d->va, this);
+}
+
+QDeclarativeAnchorAnimation::~QDeclarativeAnchorAnimation()
+{
+}
+
+QAbstractAnimation *QDeclarativeAnchorAnimation::qtAnimation()
+{
+ Q_D(QDeclarativeAnchorAnimation);
+ return d->va;
+}
+
+/*!
+ \qmlproperty list<Item> AnchorAnimation::targets
+ The items to reanchor.
+
+ If no targets are specified all AnchorChanges will be
+ animated by the AnchorAnimation.
+*/
+QDeclarativeListProperty<QDeclarativeItem> QDeclarativeAnchorAnimation::targets()
+{
+ Q_D(QDeclarativeAnchorAnimation);
+ return QDeclarativeListProperty<QDeclarativeItem>(this, d->targets);
+}
+
+void QDeclarativeAnchorAnimation::transition(QDeclarativeStateActions &actions,
+ QDeclarativeProperties &modified,
+ TransitionDirection direction)
+{
+ Q_D(QDeclarativeAnchorAnimation);
+ PropertyUpdater *data = new PropertyUpdater;
+ data->interpolatorType = QMetaType::QReal;
+ data->interpolator = d->interpolator;
+
+ data->reverse = direction == Backward ? true : false;
+ data->fromSourced = false;
+ data->fromDefined = false;
+
+ for (int ii = 0; ii < actions.count(); ++ii) {
+ QDeclarativeAction &action = actions[ii];
+ if (action.event && action.event->typeName() == QLatin1String("AnchorChanges")
+ && (d->targets.isEmpty() || d->targets.contains(static_cast<QDeclarativeAnchorChanges*>(action.event)->object()))) {
+ data->actions << static_cast<QDeclarativeAnchorChanges*>(action.event)->additionalActions();
+ }
+ }
+
+ if (data->actions.count()) {
+ if (!d->rangeIsSet) {
+ d->va->setStartValue(qreal(0));
+ d->va->setEndValue(qreal(1));
+ d->rangeIsSet = true;
+ }
+ d->va->setAnimValue(data, QAbstractAnimation::DeleteWhenStopped);
+ d->va->setFromSourcedValue(&data->fromSourced);
+ } else {
+ delete data;
+ }
+}
+
QT_END_NAMESPACE
diff --git a/src/declarative/util/qdeclarativeanimation_p.h b/src/declarative/util/qdeclarativeanimation_p.h
index af48309..eb339f6 100644
--- a/src/declarative/util/qdeclarativeanimation_p.h
+++ b/src/declarative/util/qdeclarativeanimation_p.h
@@ -480,6 +480,26 @@ protected:
virtual QAbstractAnimation *qtAnimation();
};
+class QDeclarativeAnchorAnimationPrivate;
+class QDeclarativeAnchorAnimation : public QDeclarativeAbstractAnimation
+{
+ Q_OBJECT
+ Q_DECLARE_PRIVATE(QDeclarativeAnchorAnimation)
+ Q_PROPERTY(QDeclarativeListProperty<QDeclarativeItem> targets READ targets)
+
+public:
+ QDeclarativeAnchorAnimation(QObject *parent=0);
+ virtual ~QDeclarativeAnchorAnimation();
+
+ QDeclarativeListProperty<QDeclarativeItem> targets();
+
+protected:
+ virtual void transition(QDeclarativeStateActions &actions,
+ QDeclarativeProperties &modified,
+ TransitionDirection direction);
+ virtual QAbstractAnimation *qtAnimation();
+};
+
QT_END_NAMESPACE
QML_DECLARE_TYPE(QDeclarativeAbstractAnimation)
@@ -495,6 +515,7 @@ QML_DECLARE_TYPE(QDeclarativeParallelAnimation)
QML_DECLARE_TYPE(QDeclarativeVector3dAnimation)
QML_DECLARE_TYPE(QDeclarativeRotationAnimation)
QML_DECLARE_TYPE(QDeclarativeParentAnimation)
+QML_DECLARE_TYPE(QDeclarativeAnchorAnimation)
QT_END_HEADER
diff --git a/src/declarative/util/qdeclarativeanimation_p_p.h b/src/declarative/util/qdeclarativeanimation_p_p.h
index ae82a90..0460312 100644
--- a/src/declarative/util/qdeclarativeanimation_p_p.h
+++ b/src/declarative/util/qdeclarativeanimation_p_p.h
@@ -393,6 +393,19 @@ public:
QPointF computeTransformOrigin(QDeclarativeItem::TransformOrigin origin, qreal width, qreal height) const;
};
+class QDeclarativeAnchorAnimationPrivate : public QDeclarativeAbstractAnimationPrivate
+{
+ Q_DECLARE_PUBLIC(QDeclarativeAnchorAnimation)
+public:
+ QDeclarativeAnchorAnimationPrivate() : rangeIsSet(false), va(0),
+ interpolator(QVariantAnimationPrivate::getInterpolator(QMetaType::QReal)) {}
+
+ bool rangeIsSet;
+ QDeclarativeBulkValueAnimator *va;
+ QVariantAnimation::Interpolator interpolator;
+ QList<QDeclarativeItem*> targets;
+};
+
QT_END_NAMESPACE
#endif // QDECLARATIVEANIMATION_P_H
diff --git a/src/declarative/util/qdeclarativestate.cpp b/src/declarative/util/qdeclarativestate.cpp
index 1d70d33..802ff1c 100644
--- a/src/declarative/util/qdeclarativestate.cpp
+++ b/src/declarative/util/qdeclarativestate.cpp
@@ -96,21 +96,12 @@ void QDeclarativeActionEvent::reverse()
{
}
-QList<QDeclarativeAction> QDeclarativeActionEvent::extraActions()
-{
- return QList<QDeclarativeAction>();
-}
-
bool QDeclarativeActionEvent::changesBindings()
{
return false;
}
-void QDeclarativeActionEvent::clearForwardBindings()
-{
-}
-
-void QDeclarativeActionEvent::clearReverseBindings()
+void QDeclarativeActionEvent::clearBindings()
{
}
@@ -368,47 +359,60 @@ void QDeclarativeState::apply(QDeclarativeStateGroup *group, QDeclarativeTransit
for (int ii = 0; ii < applyList.count(); ++ii) {
QDeclarativeAction &action = applyList[ii];
- bool found = false;
-
- int jj;
if (action.event) {
if (!action.event->isReversable())
continue;
- for (jj = 0; jj < d->revertList.count(); ++jj) {
+ bool found = false;
+ for (int jj = 0; jj < d->revertList.count(); ++jj) {
QDeclarativeActionEvent *event = d->revertList.at(jj).event;
if (event && event->typeName() == action.event->typeName()) {
if (action.event->override(event)) {
found = true;
+
+ if (action.event != d->revertList.at(jj).event) {
+ action.event->copyOriginals(d->revertList.at(jj).event);
+
+ QDeclarativeSimpleAction r(action);
+ additionalReverts << r;
+ d->revertList.removeAt(jj);
+ } else if (action.event->isRewindable()) //###why needed?
+ action.event->saveCurrentValues();
+
break;
}
}
}
- if (!found || action.event != d->revertList.at(jj).event)
+ if (!found) {
action.event->saveOriginals();
- else if (action.event->isRewindable())
- action.event->saveCurrentValues();
+ // Only need to revert the applyList action if the previous
+ // state doesn't have a higher priority revert already
+ QDeclarativeSimpleAction r(action);
+ additionalReverts << r;
+ }
} else {
+ bool found = false;
action.fromBinding = QDeclarativePropertyPrivate::binding(action.property);
- for (jj = 0; jj < d->revertList.count(); ++jj) {
+ for (int jj = 0; jj < d->revertList.count(); ++jj) {
if (d->revertList.at(jj).property == action.property) {
found = true;
+ if (d->revertList.at(jj).binding != action.fromBinding) {
+ action.deleteFromBinding();
+ }
break;
}
}
- }
- if (!found) {
- if (!action.restore) {
- action.deleteFromBinding();
- } else {
- // Only need to revert the applyList action if the previous
- // state doesn't have a higher priority revert already
- QDeclarativeSimpleAction r(action);
- additionalReverts << r;
+ if (!found) {
+ if (!action.restore) {
+ action.deleteFromBinding();
+ } else {
+ // Only need to revert the applyList action if the previous
+ // state doesn't have a higher priority revert already
+ QDeclarativeSimpleAction r(action);
+ additionalReverts << r;
+ }
}
- } else if (d->revertList.at(jj).binding != action.fromBinding) {
- action.deleteFromBinding();
}
}
diff --git a/src/declarative/util/qdeclarativestate_p.h b/src/declarative/util/qdeclarativestate_p.h
index 0c6e7a3..ee2b7e8 100644
--- a/src/declarative/util/qdeclarativestate_p.h
+++ b/src/declarative/util/qdeclarativestate_p.h
@@ -92,17 +92,15 @@ public:
virtual bool isReversable();
virtual void reverse();
virtual void saveOriginals() {}
+ virtual void copyOriginals(QDeclarativeActionEvent *) {}
virtual bool isRewindable() { return isReversable(); }
virtual void rewind() {}
virtual void saveCurrentValues() {}
-
- //virtual bool hasExtraActions();
- virtual QList<QDeclarativeAction> extraActions();
+ virtual void saveTargetValues() {}
virtual bool changesBindings();
- virtual void clearForwardBindings();
- virtual void clearReverseBindings();
+ virtual void clearBindings();
virtual bool override(QDeclarativeActionEvent*other);
};
diff --git a/src/declarative/util/qdeclarativestateoperations.cpp b/src/declarative/util/qdeclarativestateoperations.cpp
index f13c691..6f5bb66 100644
--- a/src/declarative/util/qdeclarativestateoperations.cpp
+++ b/src/declarative/util/qdeclarativestateoperations.cpp
@@ -403,6 +403,17 @@ void QDeclarativeParentChange::saveOriginals()
d->origStackBefore = d->rewindStackBefore;
}
+void QDeclarativeParentChange::copyOriginals(QDeclarativeActionEvent *other)
+{
+ Q_D(QDeclarativeParentChange);
+ QDeclarativeParentChange *pc = static_cast<QDeclarativeParentChange*>(other);
+
+ d->origParent = pc->d_func()->rewindParent;
+ d->origStackBefore = pc->d_func()->rewindStackBefore;
+
+ saveCurrentValues();
+}
+
void QDeclarativeParentChange::execute()
{
Q_D(QDeclarativeParentChange);
@@ -568,11 +579,10 @@ QString QDeclarativeStateChangeScript::typeName() const
}
\endqml
- AnchorChanges will 'inject' \c x, \c y, \c width, and \c height changes into the transition,
- so you can animate them as you would normally changes to these properties:
+ AnchorChanges can be animated using AnchorAnimation.
\qml
//animate our anchor changes
- NumberAnimation { targets: content; properties: "x,y,width,height" }
+ AnchorAnimation {}
\endqml
For more information on anchors see \l {anchor-layout}{Anchor Layouts}.
@@ -585,10 +595,10 @@ class QDeclarativeAnchorChangesPrivate : public QObjectPrivate
public:
QDeclarativeAnchorChangesPrivate() : target(0) {}
- QString name;
QDeclarativeItem *target;
QString resetString;
QStringList resetList;
+
QDeclarativeAnchorLine left;
QDeclarativeAnchorLine right;
QDeclarativeAnchorLine horizontalCenter;
@@ -617,6 +627,24 @@ public:
qreal fromY;
qreal fromWidth;
qreal fromHeight;
+
+ qreal toX;
+ qreal toY;
+ qreal toWidth;
+ qreal toHeight;
+
+ qreal rewindX;
+ qreal rewindY;
+ qreal rewindWidth;
+ qreal rewindHeight;
+
+ bool applyOrigLeft;
+ bool applyOrigRight;
+ bool applyOrigHCenter;
+ bool applyOrigTop;
+ bool applyOrigBottom;
+ bool applyOrigVCenter;
+ bool applyOrigBaseline;
};
/*!
@@ -769,6 +797,38 @@ void QDeclarativeAnchorChanges::execute()
if (!d->target)
return;
+ //incorporate any needed "reverts"
+ if (d->applyOrigLeft)
+ d->target->anchors()->setLeft(d->origLeft);
+ if (d->applyOrigRight)
+ d->target->anchors()->setRight(d->origRight);
+ if (d->applyOrigHCenter)
+ d->target->anchors()->setHorizontalCenter(d->origHCenter);
+ if (d->applyOrigTop)
+ d->target->anchors()->setTop(d->origTop);
+ if (d->applyOrigBottom)
+ d->target->anchors()->setBottom(d->origBottom);
+ if (d->applyOrigVCenter)
+ d->target->anchors()->setVerticalCenter(d->origVCenter);
+ if (d->applyOrigBaseline)
+ d->target->anchors()->setBaseline(d->origBaseline);
+
+ //reset any anchors that have been specified
+ if (d->resetList.contains(QLatin1String("left")))
+ d->target->anchors()->resetLeft();
+ if (d->resetList.contains(QLatin1String("right")))
+ d->target->anchors()->resetRight();
+ if (d->resetList.contains(QLatin1String("horizontalCenter")))
+ d->target->anchors()->resetHorizontalCenter();
+ if (d->resetList.contains(QLatin1String("top")))
+ d->target->anchors()->resetTop();
+ if (d->resetList.contains(QLatin1String("bottom")))
+ d->target->anchors()->resetBottom();
+ if (d->resetList.contains(QLatin1String("verticalCenter")))
+ d->target->anchors()->resetVerticalCenter();
+ if (d->resetList.contains(QLatin1String("baseline")))
+ d->target->anchors()->resetBaseline();
+
//set any anchors that have been specified
if (d->left.anchorLine != QDeclarativeAnchorLine::Invalid)
d->target->anchors()->setLeft(d->left);
@@ -797,6 +857,22 @@ void QDeclarativeAnchorChanges::reverse()
if (!d->target)
return;
+ //reset any anchors set by the state
+ if (d->left.anchorLine != QDeclarativeAnchorLine::Invalid)
+ d->target->anchors()->resetLeft();
+ if (d->right.anchorLine != QDeclarativeAnchorLine::Invalid)
+ d->target->anchors()->resetRight();
+ if (d->horizontalCenter.anchorLine != QDeclarativeAnchorLine::Invalid)
+ d->target->anchors()->resetHorizontalCenter();
+ if (d->top.anchorLine != QDeclarativeAnchorLine::Invalid)
+ d->target->anchors()->resetTop();
+ if (d->bottom.anchorLine != QDeclarativeAnchorLine::Invalid)
+ d->target->anchors()->resetBottom();
+ if (d->verticalCenter.anchorLine != QDeclarativeAnchorLine::Invalid)
+ d->target->anchors()->resetVerticalCenter();
+ if (d->baseline.anchorLine != QDeclarativeAnchorLine::Invalid)
+ d->target->anchors()->resetBaseline();
+
//restore previous anchors
if (d->origLeft.anchorLine != QDeclarativeAnchorLine::Invalid)
d->target->anchors()->setLeft(d->origLeft);
@@ -819,31 +895,33 @@ QString QDeclarativeAnchorChanges::typeName() const
return QLatin1String("AnchorChanges");
}
-QList<QDeclarativeAction> QDeclarativeAnchorChanges::extraActions()
+QList<QDeclarativeAction> QDeclarativeAnchorChanges::additionalActions()
{
Q_D(QDeclarativeAnchorChanges);
QList<QDeclarativeAction> extra;
- //### try to be smarter about which ones we add.
- // or short-circuit later on if they haven't actually changed.
- // we shouldn't set explicit width if there wasn't one before.
if (d->target) {
QDeclarativeAction a;
- a.fromValue = d->fromX;
- a.property = QDeclarativeProperty(d->target, QLatin1String("x"));
- extra << a;
-
- a.fromValue = d->fromY;
- a.property = QDeclarativeProperty(d->target, QLatin1String("y"));
- extra << a;
-
- a.fromValue = d->fromWidth;
- a.property = QDeclarativeProperty(d->target, QLatin1String("width"));
- extra << a;
-
- a.fromValue = d->fromHeight;
- a.property = QDeclarativeProperty(d->target, QLatin1String("height"));
- extra << a;
+ if (d->fromX != d->toX) {
+ a.property = QDeclarativeProperty(d->target, QLatin1String("x"));
+ a.toValue = d->toX;
+ extra << a;
+ }
+ if (d->fromY != d->toY) {
+ a.property = QDeclarativeProperty(d->target, QLatin1String("y"));
+ a.toValue = d->toY;
+ extra << a;
+ }
+ if (d->fromWidth != d->toWidth) {
+ a.property = QDeclarativeProperty(d->target, QLatin1String("width"));
+ a.toValue = d->toWidth;
+ extra << a;
+ }
+ if (d->fromHeight != d->toHeight) {
+ a.property = QDeclarativeProperty(d->target, QLatin1String("height"));
+ a.toValue = d->toHeight;
+ extra << a;
+ }
}
return extra;
@@ -865,10 +943,52 @@ void QDeclarativeAnchorChanges::saveOriginals()
d->origVCenter = d->target->anchors()->verticalCenter();
d->origBaseline = d->target->anchors()->baseline();
+ d->applyOrigLeft = d->applyOrigRight = d->applyOrigHCenter = d->applyOrigTop
+ = d->applyOrigBottom = d->applyOrigHCenter = d->applyOrigBaseline = false;
+
saveCurrentValues();
}
-void QDeclarativeAnchorChanges::clearForwardBindings()
+void QDeclarativeAnchorChanges::copyOriginals(QDeclarativeActionEvent *other)
+{
+ Q_D(QDeclarativeAnchorChanges);
+ QDeclarativeAnchorChanges *ac = static_cast<QDeclarativeAnchorChanges*>(other);
+ QDeclarativeAnchorChangesPrivate *acp = ac->d_func();
+
+ //probably also need to revert some things
+ d->applyOrigLeft = (acp->left.anchorLine != QDeclarativeAnchorLine::Invalid ||
+ acp->resetList.contains(QLatin1String("left")));
+
+ d->applyOrigRight = (acp->right.anchorLine != QDeclarativeAnchorLine::Invalid ||
+ acp->resetList.contains(QLatin1String("right")));
+
+ d->applyOrigHCenter = (acp->horizontalCenter.anchorLine != QDeclarativeAnchorLine::Invalid ||
+ acp->resetList.contains(QLatin1String("horizontalCenter")));
+
+ d->applyOrigTop = (acp->top.anchorLine != QDeclarativeAnchorLine::Invalid ||
+ acp->resetList.contains(QLatin1String("top")));
+
+ d->applyOrigBottom = (acp->bottom.anchorLine != QDeclarativeAnchorLine::Invalid ||
+ acp->resetList.contains(QLatin1String("bottom")));
+
+ d->applyOrigVCenter = (acp->verticalCenter.anchorLine != QDeclarativeAnchorLine::Invalid ||
+ acp->resetList.contains(QLatin1String("verticalCenter")));
+
+ d->applyOrigBaseline = (acp->baseline.anchorLine != QDeclarativeAnchorLine::Invalid ||
+ acp->resetList.contains(QLatin1String("baseline")));
+
+ d->origLeft = ac->d_func()->origLeft;
+ d->origRight = ac->d_func()->origRight;
+ d->origHCenter = ac->d_func()->origHCenter;
+ d->origTop = ac->d_func()->origTop;
+ d->origBottom = ac->d_func()->origBottom;
+ d->origVCenter = ac->d_func()->origVCenter;
+ d->origBaseline = ac->d_func()->origBaseline;
+
+ saveCurrentValues();
+}
+
+void QDeclarativeAnchorChanges::clearBindings()
{
Q_D(QDeclarativeAnchorChanges);
d->fromX = d->target->x();
@@ -876,6 +996,22 @@ void QDeclarativeAnchorChanges::clearForwardBindings()
d->fromWidth = d->target->width();
d->fromHeight = d->target->height();
+ //reset any anchors with corresponding reverts
+ if (d->applyOrigLeft)
+ d->target->anchors()->resetLeft();
+ if (d->applyOrigRight)
+ d->target->anchors()->resetRight();
+ if (d->applyOrigHCenter)
+ d->target->anchors()->resetHorizontalCenter();
+ if (d->applyOrigTop)
+ d->target->anchors()->resetTop();
+ if (d->applyOrigBottom)
+ d->target->anchors()->resetBottom();
+ if (d->applyOrigVCenter)
+ d->target->anchors()->resetVerticalCenter();
+ if (d->applyOrigBaseline)
+ d->target->anchors()->resetBaseline();
+
//reset any anchors that have been specified
if (d->resetList.contains(QLatin1String("left")))
d->target->anchors()->resetLeft();
@@ -909,47 +1045,6 @@ void QDeclarativeAnchorChanges::clearForwardBindings()
d->target->anchors()->resetBaseline();
}
-void QDeclarativeAnchorChanges::clearReverseBindings()
-{
- Q_D(QDeclarativeAnchorChanges);
- d->fromX = d->target->x();
- d->fromY = d->target->y();
- d->fromWidth = d->target->width();
- d->fromHeight = d->target->height();
-
- //reset any anchors that were set in the state
- if (d->left.anchorLine != QDeclarativeAnchorLine::Invalid)
- d->target->anchors()->resetLeft();
- if (d->right.anchorLine != QDeclarativeAnchorLine::Invalid)
- d->target->anchors()->resetRight();
- if (d->horizontalCenter.anchorLine != QDeclarativeAnchorLine::Invalid)
- d->target->anchors()->resetHorizontalCenter();
- if (d->top.anchorLine != QDeclarativeAnchorLine::Invalid)
- d->target->anchors()->resetTop();
- if (d->bottom.anchorLine != QDeclarativeAnchorLine::Invalid)
- d->target->anchors()->resetBottom();
- if (d->verticalCenter.anchorLine != QDeclarativeAnchorLine::Invalid)
- d->target->anchors()->resetVerticalCenter();
- if (d->baseline.anchorLine != QDeclarativeAnchorLine::Invalid)
- d->target->anchors()->resetBaseline();
-
- //reset any anchors that were set in the original state
- if (d->origLeft.anchorLine != QDeclarativeAnchorLine::Invalid)
- d->target->anchors()->resetLeft();
- if (d->origRight.anchorLine != QDeclarativeAnchorLine::Invalid)
- d->target->anchors()->resetRight();
- if (d->origHCenter.anchorLine != QDeclarativeAnchorLine::Invalid)
- d->target->anchors()->resetHorizontalCenter();
- if (d->origTop.anchorLine != QDeclarativeAnchorLine::Invalid)
- d->target->anchors()->resetTop();
- if (d->origBottom.anchorLine != QDeclarativeAnchorLine::Invalid)
- d->target->anchors()->resetBottom();
- if (d->origVCenter.anchorLine != QDeclarativeAnchorLine::Invalid)
- d->target->anchors()->resetVerticalCenter();
- if (d->origBaseline.anchorLine != QDeclarativeAnchorLine::Invalid)
- d->target->anchors()->resetBaseline();
-}
-
bool QDeclarativeAnchorChanges::override(QDeclarativeActionEvent*other)
{
if (other->typeName() != QLatin1String("AnchorChanges"))
@@ -982,6 +1077,11 @@ void QDeclarativeAnchorChanges::rewind()
d->target->anchors()->setVerticalCenter(d->rewindVCenter);
if (d->rewindBaseline.anchorLine != QDeclarativeAnchorLine::Invalid)
d->target->anchors()->setBaseline(d->rewindBaseline);
+
+ d->target->setX(d->rewindX);
+ d->target->setY(d->rewindY);
+ d->target->setWidth(d->rewindWidth);
+ d->target->setHeight(d->rewindHeight);
}
void QDeclarativeAnchorChanges::saveCurrentValues()
@@ -994,6 +1094,20 @@ void QDeclarativeAnchorChanges::saveCurrentValues()
d->rewindBottom = d->target->anchors()->bottom();
d->rewindVCenter = d->target->anchors()->verticalCenter();
d->rewindBaseline = d->target->anchors()->baseline();
+
+ d->rewindX = d->target->x();
+ d->rewindY = d->target->y();
+ d->rewindWidth = d->target->width();
+ d->rewindHeight = d->target->height();
+}
+
+void QDeclarativeAnchorChanges::saveTargetValues()
+{
+ Q_D(QDeclarativeAnchorChanges);
+ d->toX = d->target->x();
+ d->toY = d->target->y();
+ d->toWidth = d->target->width();
+ d->toHeight = d->target->height();
}
#include <qdeclarativestateoperations.moc>
diff --git a/src/declarative/util/qdeclarativestateoperations_p.h b/src/declarative/util/qdeclarativestateoperations_p.h
index dd4248023..66a8717 100644
--- a/src/declarative/util/qdeclarativestateoperations_p.h
+++ b/src/declarative/util/qdeclarativestateoperations_p.h
@@ -107,6 +107,7 @@ public:
virtual ActionList actions();
virtual void saveOriginals();
+ virtual void copyOriginals(QDeclarativeActionEvent*);
virtual void execute();
virtual bool isReversable();
virtual void reverse();
@@ -196,13 +197,15 @@ public:
virtual void reverse();
virtual QString typeName() const;
virtual bool override(QDeclarativeActionEvent*other);
- virtual QList<QDeclarativeAction> extraActions();
virtual bool changesBindings();
virtual void saveOriginals();
- virtual void clearForwardBindings();
- virtual void clearReverseBindings();
+ virtual void copyOriginals(QDeclarativeActionEvent*);
+ virtual void clearBindings();
virtual void rewind();
virtual void saveCurrentValues();
+
+ QList<QDeclarativeAction> additionalActions();
+ virtual void saveTargetValues();
};
QT_END_NAMESPACE
diff --git a/src/declarative/util/qdeclarativetransitionmanager.cpp b/src/declarative/util/qdeclarativetransitionmanager.cpp
index e1143fa..f07fb23 100644
--- a/src/declarative/util/qdeclarativetransitionmanager.cpp
+++ b/src/declarative/util/qdeclarativetransitionmanager.cpp
@@ -126,10 +126,7 @@ void QDeclarativeTransitionManager::transition(const QList<QDeclarativeAction> &
QDeclarativePropertyPrivate::setBinding(action.property, 0); // Disable current binding
if (action.event && action.event->changesBindings()) { //### assume isReversable()?
d->bindingsList << action;
- if (action.reverseEvent)
- action.event->clearReverseBindings();
- else
- action.event->clearForwardBindings();
+ action.event->clearBindings();
}
}
@@ -144,8 +141,6 @@ void QDeclarativeTransitionManager::transition(const QList<QDeclarativeAction> &
if (!d->bindingsList.isEmpty()) {
- //### do extra actions here?
-
// Apply all the property and binding changes
for (int ii = 0; ii < applyList.size(); ++ii) {
const QDeclarativeAction &action = applyList.at(ii);
@@ -158,17 +153,18 @@ void QDeclarativeTransitionManager::transition(const QList<QDeclarativeAction> &
action.event->reverse();
else
action.event->execute();
- applyList << action.event->extraActions();
}
}
// Read all the end values for binding changes
for (int ii = 0; ii < applyList.size(); ++ii) {
QDeclarativeAction *action = &applyList[ii];
- if (action->event)
+ if (action->event) {
+ action->event->saveTargetValues();
continue;
+ }
const QDeclarativeProperty &prop = action->property;
- if (action->toBinding || !action->toValue.isValid()) { //### is this always right (used for exta actions)
+ if (action->toBinding || !action->toValue.isValid()) {
action->toValue = prop.read();
}
}
@@ -177,15 +173,9 @@ void QDeclarativeTransitionManager::transition(const QList<QDeclarativeAction> &
foreach(const QDeclarativeAction &action, applyList) {
if (action.event) {
if (action.event->isReversable()) {
- if (action.reverseEvent) { //reverse the reverse
- action.event->clearForwardBindings();
- action.event->rewind();
- action.event->clearReverseBindings();
- } else {
- action.event->clearReverseBindings();
- action.event->rewind();
- action.event->clearForwardBindings();
- }
+ action.event->clearBindings();
+ action.event->rewind();
+ action.event->clearBindings();
}
continue;
}
diff --git a/src/declarative/util/qdeclarativeutilmodule.cpp b/src/declarative/util/qdeclarativeutilmodule.cpp
index 9c3b0aa..4d4678a 100644
--- a/src/declarative/util/qdeclarativeutilmodule.cpp
+++ b/src/declarative/util/qdeclarativeutilmodule.cpp
@@ -75,6 +75,7 @@
void QDeclarativeUtilModule::defineModule()
{
+ qmlRegisterType<QDeclarativeAnchorAnimation>("Qt",4,6,"AnchorAnimation");
qmlRegisterType<QDeclarativeAnchorChanges>("Qt",4,6,"AnchorChanges");
qmlRegisterType<QDeclarativeBehavior>("Qt",4,6,"Behavior");
qmlRegisterType<QDeclarativeBind>("Qt",4,6,"Binding");
diff --git a/tests/auto/declarative/visual/animation/parentAnimation/parentAnimation.qml b/tests/auto/declarative/visual/animation/parentAnimation/parentAnimation.qml
index 1833cf0..5db2cc6 100644
--- a/tests/auto/declarative/visual/animation/parentAnimation/parentAnimation.qml
+++ b/tests/auto/declarative/visual/animation/parentAnimation/parentAnimation.qml
@@ -10,7 +10,7 @@ Rectangle {
width: 100; height: 100
}
- MouseRegion {
+ MouseArea {
id: mouser
anchors.fill: parent
}
diff --git a/tests/auto/declarative/visual/animation/reanchor/data/reanchor.0.png b/tests/auto/declarative/visual/animation/reanchor/data/reanchor.0.png
index c7bbf38..454f6c1 100644
--- a/tests/auto/declarative/visual/animation/reanchor/data/reanchor.0.png
+++ b/tests/auto/declarative/visual/animation/reanchor/data/reanchor.0.png
Binary files differ
diff --git a/tests/auto/declarative/visual/animation/reanchor/data/reanchor.1.png b/tests/auto/declarative/visual/animation/reanchor/data/reanchor.1.png
index 612500b..9dde537 100644
--- a/tests/auto/declarative/visual/animation/reanchor/data/reanchor.1.png
+++ b/tests/auto/declarative/visual/animation/reanchor/data/reanchor.1.png
Binary files differ
diff --git a/tests/auto/declarative/visual/animation/reanchor/data/reanchor.2.png b/tests/auto/declarative/visual/animation/reanchor/data/reanchor.2.png
index c7bbf38..454f6c1 100644
--- a/tests/auto/declarative/visual/animation/reanchor/data/reanchor.2.png
+++ b/tests/auto/declarative/visual/animation/reanchor/data/reanchor.2.png
Binary files differ
diff --git a/tests/auto/declarative/visual/animation/reanchor/data/reanchor.3.png b/tests/auto/declarative/visual/animation/reanchor/data/reanchor.3.png
index c7bbf38..454f6c1 100644
--- a/tests/auto/declarative/visual/animation/reanchor/data/reanchor.3.png
+++ b/tests/auto/declarative/visual/animation/reanchor/data/reanchor.3.png
Binary files differ
diff --git a/tests/auto/declarative/visual/animation/reanchor/data/reanchor.4.png b/tests/auto/declarative/visual/animation/reanchor/data/reanchor.4.png
index 1910eb4..043b487 100644
--- a/tests/auto/declarative/visual/animation/reanchor/data/reanchor.4.png
+++ b/tests/auto/declarative/visual/animation/reanchor/data/reanchor.4.png
Binary files differ
diff --git a/tests/auto/declarative/visual/animation/reanchor/data/reanchor.5.png b/tests/auto/declarative/visual/animation/reanchor/data/reanchor.5.png
index 3b8eebd..79c791d 100644
--- a/tests/auto/declarative/visual/animation/reanchor/data/reanchor.5.png
+++ b/tests/auto/declarative/visual/animation/reanchor/data/reanchor.5.png
Binary files differ
diff --git a/tests/auto/declarative/visual/animation/reanchor/data/reanchor.6.png b/tests/auto/declarative/visual/animation/reanchor/data/reanchor.6.png
index c7bbf38..454f6c1 100644
--- a/tests/auto/declarative/visual/animation/reanchor/data/reanchor.6.png
+++ b/tests/auto/declarative/visual/animation/reanchor/data/reanchor.6.png
Binary files differ
diff --git a/tests/auto/declarative/visual/animation/reanchor/data/reanchor.7.png b/tests/auto/declarative/visual/animation/reanchor/data/reanchor.7.png
index c7bbf38..454f6c1 100644
--- a/tests/auto/declarative/visual/animation/reanchor/data/reanchor.7.png
+++ b/tests/auto/declarative/visual/animation/reanchor/data/reanchor.7.png
Binary files differ
diff --git a/tests/auto/declarative/visual/animation/reanchor/data/reanchor.8.png b/tests/auto/declarative/visual/animation/reanchor/data/reanchor.8.png
index 960be31..a7d6674 100644
--- a/tests/auto/declarative/visual/animation/reanchor/data/reanchor.8.png
+++ b/tests/auto/declarative/visual/animation/reanchor/data/reanchor.8.png
Binary files differ
diff --git a/tests/auto/declarative/visual/animation/reanchor/data/reanchor.qml b/tests/auto/declarative/visual/animation/reanchor/data/reanchor.qml
index 0f58de5..a130b75 100644
--- a/tests/auto/declarative/visual/animation/reanchor/data/reanchor.qml
+++ b/tests/auto/declarative/visual/animation/reanchor/data/reanchor.qml
@@ -386,115 +386,115 @@ VisualTest {
}
Frame {
msec: 1472
- hash: "c2d6dd91f3e9cdcacbadcb449c8a9896"
+ hash: "eb3eeb37ab7b26692cbf100adfaf3772"
}
Frame {
msec: 1488
- hash: "1098ea19aecebd71208e101d522c1981"
+ hash: "e1a8cdcb1f3ec097a968b3b20964c6e8"
}
Frame {
msec: 1504
- hash: "8cc59c20d796c073038518d2855fb6f0"
+ hash: "44fc52479251327d0612de17ddb056eb"
}
Frame {
msec: 1520
- hash: "914a89d0cfdc68145024ce2305a5e76e"
+ hash: "fa7e4a910aa60500575a34852c0c7cb8"
}
Frame {
msec: 1536
- hash: "7a2e3ca2660df24d9a6ec49a7422ebe1"
+ hash: "66d205a02e35221e7684ab995acc1312"
}
Frame {
msec: 1552
- hash: "b71496d986d5f0aa76b4f1663627f1f7"
+ hash: "4ebe8dba6d9f3179b610b2298a7484a2"
}
Frame {
msec: 1568
- hash: "41b29a523db919bc0a4e0a9a88bfc873"
+ hash: "9b2582fccffa34fe389ba427ce47619a"
}
Frame {
msec: 1584
- hash: "97632a0de766b9ffbf71f21eeb0ff9a2"
+ hash: "e6f15478bda9995f82976b9e16659c8e"
}
Frame {
msec: 1600
- hash: "94cc196e62c150008461ff9996b4cae8"
+ hash: "f08df0885fff04819ada6c10b25dd489"
}
Frame {
msec: 1616
- hash: "32e96ad2d15fa2386d365ab249ddf4f4"
+ hash: "0f57c152306747cfa27171f1947ca65d"
}
Frame {
msec: 1632
- hash: "209394314f971b12fbc61ca45010cc62"
+ hash: "89d9c988abd55063e210b81193c6a8f0"
}
Frame {
msec: 1648
- hash: "b917c2684dda8af00278b34ababdcf5c"
+ hash: "91e0d0a5d57210c790c2d2399d1f7022"
}
Frame {
msec: 1664
- hash: "92b506860c1c5dc52f87c24c89921b05"
+ hash: "267874fdc09459b3e854c06d9ae99a54"
}
Frame {
msec: 1680
- hash: "7b7e96113fa9359954be9b3ac87943c3"
+ hash: "2f58a508f439c40c6f2bd7da1f30deff"
}
Frame {
msec: 1696
- hash: "42bc69db42c5df902038cec414246ec5"
+ hash: "1451548d9f0002a6c4765cb616ab7f59"
}
Frame {
msec: 1712
- hash: "7eb4027421fd6aa7d668a704e40a6e61"
+ hash: "ad3837dcf3e69274ac2918d796974f29"
}
Frame {
msec: 1728
- hash: "7eb4027421fd6aa7d668a704e40a6e61"
+ hash: "ad3837dcf3e69274ac2918d796974f29"
}
Frame {
msec: 1744
- hash: "7eb4027421fd6aa7d668a704e40a6e61"
+ hash: "ad3837dcf3e69274ac2918d796974f29"
}
Frame {
msec: 1760
- hash: "7eb4027421fd6aa7d668a704e40a6e61"
+ hash: "ad3837dcf3e69274ac2918d796974f29"
}
Frame {
msec: 1776
- hash: "7eb4027421fd6aa7d668a704e40a6e61"
+ hash: "ad3837dcf3e69274ac2918d796974f29"
}
Frame {
msec: 1792
- hash: "7eb4027421fd6aa7d668a704e40a6e61"
+ hash: "ad3837dcf3e69274ac2918d796974f29"
}
Frame {
msec: 1808
- hash: "7eb4027421fd6aa7d668a704e40a6e61"
+ hash: "ad3837dcf3e69274ac2918d796974f29"
}
Frame {
msec: 1824
- hash: "7eb4027421fd6aa7d668a704e40a6e61"
+ hash: "ad3837dcf3e69274ac2918d796974f29"
}
Frame {
msec: 1840
- hash: "7eb4027421fd6aa7d668a704e40a6e61"
+ hash: "ad3837dcf3e69274ac2918d796974f29"
}
Frame {
msec: 1856
- hash: "7eb4027421fd6aa7d668a704e40a6e61"
+ hash: "ad3837dcf3e69274ac2918d796974f29"
}
Frame {
msec: 1872
- hash: "7eb4027421fd6aa7d668a704e40a6e61"
+ hash: "ad3837dcf3e69274ac2918d796974f29"
}
Frame {
msec: 1888
- hash: "7eb4027421fd6aa7d668a704e40a6e61"
+ hash: "ad3837dcf3e69274ac2918d796974f29"
}
Frame {
msec: 1904
- hash: "7eb4027421fd6aa7d668a704e40a6e61"
+ hash: "ad3837dcf3e69274ac2918d796974f29"
}
Frame {
msec: 1920
@@ -502,47 +502,47 @@ VisualTest {
}
Frame {
msec: 1936
- hash: "7eb4027421fd6aa7d668a704e40a6e61"
+ hash: "ad3837dcf3e69274ac2918d796974f29"
}
Frame {
msec: 1952
- hash: "7eb4027421fd6aa7d668a704e40a6e61"
+ hash: "ad3837dcf3e69274ac2918d796974f29"
}
Frame {
msec: 1968
- hash: "7eb4027421fd6aa7d668a704e40a6e61"
+ hash: "ad3837dcf3e69274ac2918d796974f29"
}
Frame {
msec: 1984
- hash: "7eb4027421fd6aa7d668a704e40a6e61"
+ hash: "ad3837dcf3e69274ac2918d796974f29"
}
Frame {
msec: 2000
- hash: "7eb4027421fd6aa7d668a704e40a6e61"
+ hash: "ad3837dcf3e69274ac2918d796974f29"
}
Frame {
msec: 2016
- hash: "7eb4027421fd6aa7d668a704e40a6e61"
+ hash: "ad3837dcf3e69274ac2918d796974f29"
}
Frame {
msec: 2032
- hash: "7eb4027421fd6aa7d668a704e40a6e61"
+ hash: "ad3837dcf3e69274ac2918d796974f29"
}
Frame {
msec: 2048
- hash: "7eb4027421fd6aa7d668a704e40a6e61"
+ hash: "ad3837dcf3e69274ac2918d796974f29"
}
Frame {
msec: 2064
- hash: "7eb4027421fd6aa7d668a704e40a6e61"
+ hash: "ad3837dcf3e69274ac2918d796974f29"
}
Frame {
msec: 2080
- hash: "7eb4027421fd6aa7d668a704e40a6e61"
+ hash: "ad3837dcf3e69274ac2918d796974f29"
}
Frame {
msec: 2096
- hash: "7eb4027421fd6aa7d668a704e40a6e61"
+ hash: "ad3837dcf3e69274ac2918d796974f29"
}
Mouse {
type: 2
@@ -554,31 +554,31 @@ VisualTest {
}
Frame {
msec: 2112
- hash: "7eb4027421fd6aa7d668a704e40a6e61"
+ hash: "ad3837dcf3e69274ac2918d796974f29"
}
Frame {
msec: 2128
- hash: "7eb4027421fd6aa7d668a704e40a6e61"
+ hash: "ad3837dcf3e69274ac2918d796974f29"
}
Frame {
msec: 2144
- hash: "7eb4027421fd6aa7d668a704e40a6e61"
+ hash: "ad3837dcf3e69274ac2918d796974f29"
}
Frame {
msec: 2160
- hash: "7eb4027421fd6aa7d668a704e40a6e61"
+ hash: "ad3837dcf3e69274ac2918d796974f29"
}
Frame {
msec: 2176
- hash: "7eb4027421fd6aa7d668a704e40a6e61"
+ hash: "ad3837dcf3e69274ac2918d796974f29"
}
Frame {
msec: 2192
- hash: "7eb4027421fd6aa7d668a704e40a6e61"
+ hash: "ad3837dcf3e69274ac2918d796974f29"
}
Frame {
msec: 2208
- hash: "7eb4027421fd6aa7d668a704e40a6e61"
+ hash: "ad3837dcf3e69274ac2918d796974f29"
}
Mouse {
type: 3
@@ -590,67 +590,67 @@ VisualTest {
}
Frame {
msec: 2224
- hash: "7eb4027421fd6aa7d668a704e40a6e61"
+ hash: "ad3837dcf3e69274ac2918d796974f29"
}
Frame {
msec: 2240
- hash: "2d1aa011f2008a6147ba593e3cf272d7"
+ hash: "8ceca291e28f52368346f171c2f31664"
}
Frame {
msec: 2256
- hash: "206699ea84ce9fd60c1603b7a48a5134"
+ hash: "903877286f3ef112e6a661abde5c17bd"
}
Frame {
msec: 2272
- hash: "68eb6df93a2b6db7023f7c3cc71d5b5f"
+ hash: "cc2d15c96571f9328b929f96849c8f9e"
}
Frame {
msec: 2288
- hash: "5a4cd0620959dde92eeeaaa4dcd13091"
+ hash: "26e6c03b1b91b725d6e0fe9216a7413e"
}
Frame {
msec: 2304
- hash: "17b763187a777253b25b22f5dd7253ae"
+ hash: "213e8e9905bea32ddb97d38b75cd19cc"
}
Frame {
msec: 2320
- hash: "1de9dcf4d385266f4482e2d0967d9119"
+ hash: "17d5726a282d42fcde7796be84606fcd"
}
Frame {
msec: 2336
- hash: "833496add6dbc3103a28a47e453a738b"
+ hash: "f4629bf9f5837f687ae49008c9d28d02"
}
Frame {
msec: 2352
- hash: "b3bab2e9c56db60cd54e68369e6b790d"
+ hash: "fbc927cb136d8d29b2578e78c4793e41"
}
Frame {
msec: 2368
- hash: "ee91c6cd909bec401a1a7eebd10b8b02"
+ hash: "c7099e732490dd2f3205986a7c43a165"
}
Frame {
msec: 2384
- hash: "0ed679ad0ab7bd3544947bccda88647b"
+ hash: "b3b464a8e67fab05109b49604f1ce705"
}
Frame {
msec: 2400
- hash: "d7dfcdc8a4233821919f1732d8c39712"
+ hash: "7629b2a77f9f87aa0ef2535aa9b8d390"
}
Frame {
msec: 2416
- hash: "c52829ee689e4c312a9dff8dbd4a79f9"
+ hash: "6a329c289236782e095cfa6f15409726"
}
Frame {
msec: 2432
- hash: "7962badda0e80a61b67943d3b31f892d"
+ hash: "1cfbf6f4c292e1520b44d84dd59b93a8"
}
Frame {
msec: 2448
- hash: "fc5f2c24e3d8743ab5b20aaa122bacc2"
+ hash: "a8d3d838bffb39053eb705aefcb39c46"
}
Frame {
msec: 2464
- hash: "201b9ee6c9ac6208ef812fe2e95020ef"
+ hash: "a56ad66a949e07e3174a58c80145c85e"
}
Frame {
msec: 2480
@@ -774,123 +774,123 @@ VisualTest {
}
Frame {
msec: 2896
- hash: "c2d6dd91f3e9cdcacbadcb449c8a9896"
+ hash: "eb3eeb37ab7b26692cbf100adfaf3772"
}
Frame {
msec: 2912
- hash: "1098ea19aecebd71208e101d522c1981"
+ hash: "e1a8cdcb1f3ec097a968b3b20964c6e8"
}
Frame {
msec: 2928
- hash: "8cc59c20d796c073038518d2855fb6f0"
+ hash: "44fc52479251327d0612de17ddb056eb"
}
Frame {
msec: 2944
- hash: "914a89d0cfdc68145024ce2305a5e76e"
+ hash: "fa7e4a910aa60500575a34852c0c7cb8"
}
Frame {
msec: 2960
- hash: "7a2e3ca2660df24d9a6ec49a7422ebe1"
+ hash: "66d205a02e35221e7684ab995acc1312"
}
Frame {
msec: 2976
- hash: "b71496d986d5f0aa76b4f1663627f1f7"
+ hash: "4ebe8dba6d9f3179b610b2298a7484a2"
}
Frame {
msec: 2992
- hash: "41b29a523db919bc0a4e0a9a88bfc873"
+ hash: "9b2582fccffa34fe389ba427ce47619a"
}
Frame {
msec: 3008
- hash: "97632a0de766b9ffbf71f21eeb0ff9a2"
+ hash: "e6f15478bda9995f82976b9e16659c8e"
}
Frame {
msec: 3024
- hash: "94cc196e62c150008461ff9996b4cae8"
+ hash: "f08df0885fff04819ada6c10b25dd489"
}
Frame {
msec: 3040
- hash: "32e96ad2d15fa2386d365ab249ddf4f4"
+ hash: "0f57c152306747cfa27171f1947ca65d"
}
Frame {
msec: 3056
- hash: "209394314f971b12fbc61ca45010cc62"
+ hash: "89d9c988abd55063e210b81193c6a8f0"
}
Frame {
msec: 3072
- hash: "b917c2684dda8af00278b34ababdcf5c"
+ hash: "91e0d0a5d57210c790c2d2399d1f7022"
}
Frame {
msec: 3088
- hash: "92b506860c1c5dc52f87c24c89921b05"
+ hash: "267874fdc09459b3e854c06d9ae99a54"
}
Frame {
msec: 3104
- hash: "7b7e96113fa9359954be9b3ac87943c3"
+ hash: "2f58a508f439c40c6f2bd7da1f30deff"
}
Frame {
msec: 3120
- hash: "42bc69db42c5df902038cec414246ec5"
+ hash: "1451548d9f0002a6c4765cb616ab7f59"
}
Frame {
msec: 3136
- hash: "7eb4027421fd6aa7d668a704e40a6e61"
+ hash: "ad3837dcf3e69274ac2918d796974f29"
}
Frame {
msec: 3152
- hash: "7eb4027421fd6aa7d668a704e40a6e61"
+ hash: "ad3837dcf3e69274ac2918d796974f29"
}
Frame {
msec: 3168
- hash: "7eb4027421fd6aa7d668a704e40a6e61"
+ hash: "ad3837dcf3e69274ac2918d796974f29"
}
Frame {
msec: 3184
- hash: "7eb4027421fd6aa7d668a704e40a6e61"
+ hash: "ad3837dcf3e69274ac2918d796974f29"
}
Frame {
msec: 3200
- hash: "7eb4027421fd6aa7d668a704e40a6e61"
+ hash: "ad3837dcf3e69274ac2918d796974f29"
}
Frame {
msec: 3216
- hash: "7eb4027421fd6aa7d668a704e40a6e61"
+ hash: "ad3837dcf3e69274ac2918d796974f29"
}
Frame {
msec: 3232
- hash: "7eb4027421fd6aa7d668a704e40a6e61"
+ hash: "ad3837dcf3e69274ac2918d796974f29"
}
Frame {
msec: 3248
- hash: "7eb4027421fd6aa7d668a704e40a6e61"
+ hash: "ad3837dcf3e69274ac2918d796974f29"
}
Frame {
msec: 3264
- hash: "7eb4027421fd6aa7d668a704e40a6e61"
+ hash: "ad3837dcf3e69274ac2918d796974f29"
}
Frame {
msec: 3280
- hash: "7eb4027421fd6aa7d668a704e40a6e61"
+ hash: "ad3837dcf3e69274ac2918d796974f29"
}
Frame {
msec: 3296
- hash: "7eb4027421fd6aa7d668a704e40a6e61"
+ hash: "ad3837dcf3e69274ac2918d796974f29"
}
Frame {
msec: 3312
- hash: "7eb4027421fd6aa7d668a704e40a6e61"
+ hash: "ad3837dcf3e69274ac2918d796974f29"
}
Frame {
msec: 3328
- hash: "7eb4027421fd6aa7d668a704e40a6e61"
+ hash: "ad3837dcf3e69274ac2918d796974f29"
}
Frame {
msec: 3344
- hash: "7eb4027421fd6aa7d668a704e40a6e61"
+ hash: "ad3837dcf3e69274ac2918d796974f29"
}
Frame {
msec: 3360
- hash: "7eb4027421fd6aa7d668a704e40a6e61"
+ hash: "ad3837dcf3e69274ac2918d796974f29"
}
Mouse {
type: 2
@@ -902,31 +902,31 @@ VisualTest {
}
Frame {
msec: 3376
- hash: "7eb4027421fd6aa7d668a704e40a6e61"
+ hash: "ad3837dcf3e69274ac2918d796974f29"
}
Frame {
msec: 3392
- hash: "7eb4027421fd6aa7d668a704e40a6e61"
+ hash: "ad3837dcf3e69274ac2918d796974f29"
}
Frame {
msec: 3408
- hash: "7eb4027421fd6aa7d668a704e40a6e61"
+ hash: "ad3837dcf3e69274ac2918d796974f29"
}
Frame {
msec: 3424
- hash: "7eb4027421fd6aa7d668a704e40a6e61"
+ hash: "ad3837dcf3e69274ac2918d796974f29"
}
Frame {
msec: 3440
- hash: "7eb4027421fd6aa7d668a704e40a6e61"
+ hash: "ad3837dcf3e69274ac2918d796974f29"
}
Frame {
msec: 3456
- hash: "7eb4027421fd6aa7d668a704e40a6e61"
+ hash: "ad3837dcf3e69274ac2918d796974f29"
}
Frame {
msec: 3472
- hash: "7eb4027421fd6aa7d668a704e40a6e61"
+ hash: "ad3837dcf3e69274ac2918d796974f29"
}
Mouse {
type: 3
@@ -938,67 +938,67 @@ VisualTest {
}
Frame {
msec: 3488
- hash: "7eb4027421fd6aa7d668a704e40a6e61"
+ hash: "ad3837dcf3e69274ac2918d796974f29"
}
Frame {
msec: 3504
- hash: "2d1aa011f2008a6147ba593e3cf272d7"
+ hash: "8ceca291e28f52368346f171c2f31664"
}
Frame {
msec: 3520
- hash: "206699ea84ce9fd60c1603b7a48a5134"
+ hash: "903877286f3ef112e6a661abde5c17bd"
}
Frame {
msec: 3536
- hash: "68eb6df93a2b6db7023f7c3cc71d5b5f"
+ hash: "cc2d15c96571f9328b929f96849c8f9e"
}
Frame {
msec: 3552
- hash: "5a4cd0620959dde92eeeaaa4dcd13091"
+ hash: "26e6c03b1b91b725d6e0fe9216a7413e"
}
Frame {
msec: 3568
- hash: "17b763187a777253b25b22f5dd7253ae"
+ hash: "213e8e9905bea32ddb97d38b75cd19cc"
}
Frame {
msec: 3584
- hash: "1de9dcf4d385266f4482e2d0967d9119"
+ hash: "17d5726a282d42fcde7796be84606fcd"
}
Frame {
msec: 3600
- hash: "833496add6dbc3103a28a47e453a738b"
+ hash: "f4629bf9f5837f687ae49008c9d28d02"
}
Frame {
msec: 3616
- hash: "b3bab2e9c56db60cd54e68369e6b790d"
+ hash: "fbc927cb136d8d29b2578e78c4793e41"
}
Frame {
msec: 3632
- hash: "ee91c6cd909bec401a1a7eebd10b8b02"
+ hash: "c7099e732490dd2f3205986a7c43a165"
}
Frame {
msec: 3648
- hash: "0ed679ad0ab7bd3544947bccda88647b"
+ hash: "b3b464a8e67fab05109b49604f1ce705"
}
Frame {
msec: 3664
- hash: "d7dfcdc8a4233821919f1732d8c39712"
+ hash: "7629b2a77f9f87aa0ef2535aa9b8d390"
}
Frame {
msec: 3680
- hash: "c52829ee689e4c312a9dff8dbd4a79f9"
+ hash: "6a329c289236782e095cfa6f15409726"
}
Frame {
msec: 3696
- hash: "7962badda0e80a61b67943d3b31f892d"
+ hash: "1cfbf6f4c292e1520b44d84dd59b93a8"
}
Frame {
msec: 3712
- hash: "fc5f2c24e3d8743ab5b20aaa122bacc2"
+ hash: "a8d3d838bffb39053eb705aefcb39c46"
}
Frame {
msec: 3728
- hash: "201b9ee6c9ac6208ef812fe2e95020ef"
+ hash: "a56ad66a949e07e3174a58c80145c85e"
}
Frame {
msec: 3744
@@ -2038,183 +2038,183 @@ VisualTest {
}
Frame {
msec: 7696
- hash: "c2d6dd91f3e9cdcacbadcb449c8a9896"
+ hash: "eb3eeb37ab7b26692cbf100adfaf3772"
}
Frame {
msec: 7712
- hash: "1098ea19aecebd71208e101d522c1981"
+ hash: "e1a8cdcb1f3ec097a968b3b20964c6e8"
}
Frame {
msec: 7728
- hash: "8cc59c20d796c073038518d2855fb6f0"
+ hash: "44fc52479251327d0612de17ddb056eb"
}
Frame {
msec: 7744
- hash: "914a89d0cfdc68145024ce2305a5e76e"
+ hash: "fa7e4a910aa60500575a34852c0c7cb8"
}
Frame {
msec: 7760
- hash: "7a2e3ca2660df24d9a6ec49a7422ebe1"
+ hash: "66d205a02e35221e7684ab995acc1312"
}
Frame {
msec: 7776
- hash: "b71496d986d5f0aa76b4f1663627f1f7"
+ hash: "4ebe8dba6d9f3179b610b2298a7484a2"
}
Frame {
msec: 7792
- hash: "41b29a523db919bc0a4e0a9a88bfc873"
+ hash: "9b2582fccffa34fe389ba427ce47619a"
}
Frame {
msec: 7808
- hash: "97632a0de766b9ffbf71f21eeb0ff9a2"
+ hash: "e6f15478bda9995f82976b9e16659c8e"
}
Frame {
msec: 7824
- hash: "94cc196e62c150008461ff9996b4cae8"
+ hash: "f08df0885fff04819ada6c10b25dd489"
}
Frame {
msec: 7840
- hash: "32e96ad2d15fa2386d365ab249ddf4f4"
+ hash: "0f57c152306747cfa27171f1947ca65d"
}
Frame {
msec: 7856
- hash: "209394314f971b12fbc61ca45010cc62"
+ hash: "89d9c988abd55063e210b81193c6a8f0"
}
Frame {
msec: 7872
- hash: "b917c2684dda8af00278b34ababdcf5c"
+ hash: "91e0d0a5d57210c790c2d2399d1f7022"
}
Frame {
msec: 7888
- hash: "92b506860c1c5dc52f87c24c89921b05"
+ hash: "267874fdc09459b3e854c06d9ae99a54"
}
Frame {
msec: 7904
- hash: "7b7e96113fa9359954be9b3ac87943c3"
+ hash: "2f58a508f439c40c6f2bd7da1f30deff"
}
Frame {
msec: 7920
- hash: "42bc69db42c5df902038cec414246ec5"
+ hash: "1451548d9f0002a6c4765cb616ab7f59"
}
Frame {
msec: 7936
- hash: "7eb4027421fd6aa7d668a704e40a6e61"
+ hash: "ad3837dcf3e69274ac2918d796974f29"
}
Frame {
msec: 7952
- hash: "7eb4027421fd6aa7d668a704e40a6e61"
+ hash: "ad3837dcf3e69274ac2918d796974f29"
}
Frame {
msec: 7968
- hash: "7eb4027421fd6aa7d668a704e40a6e61"
+ hash: "ad3837dcf3e69274ac2918d796974f29"
}
Frame {
msec: 7984
- hash: "7eb4027421fd6aa7d668a704e40a6e61"
+ hash: "ad3837dcf3e69274ac2918d796974f29"
}
Frame {
msec: 8000
- hash: "7eb4027421fd6aa7d668a704e40a6e61"
+ hash: "ad3837dcf3e69274ac2918d796974f29"
}
Frame {
msec: 8016
- hash: "7eb4027421fd6aa7d668a704e40a6e61"
+ hash: "ad3837dcf3e69274ac2918d796974f29"
}
Frame {
msec: 8032
- hash: "7eb4027421fd6aa7d668a704e40a6e61"
+ hash: "ad3837dcf3e69274ac2918d796974f29"
}
Frame {
msec: 8048
- hash: "7eb4027421fd6aa7d668a704e40a6e61"
+ hash: "ad3837dcf3e69274ac2918d796974f29"
}
Frame {
msec: 8064
- hash: "7eb4027421fd6aa7d668a704e40a6e61"
+ hash: "ad3837dcf3e69274ac2918d796974f29"
}
Frame {
msec: 8080
- hash: "7eb4027421fd6aa7d668a704e40a6e61"
+ hash: "ad3837dcf3e69274ac2918d796974f29"
}
Frame {
msec: 8096
- hash: "7eb4027421fd6aa7d668a704e40a6e61"
+ hash: "ad3837dcf3e69274ac2918d796974f29"
}
Frame {
msec: 8112
- hash: "7eb4027421fd6aa7d668a704e40a6e61"
+ hash: "ad3837dcf3e69274ac2918d796974f29"
}
Frame {
msec: 8128
- hash: "7eb4027421fd6aa7d668a704e40a6e61"
+ hash: "ad3837dcf3e69274ac2918d796974f29"
}
Frame {
msec: 8144
- hash: "7eb4027421fd6aa7d668a704e40a6e61"
+ hash: "ad3837dcf3e69274ac2918d796974f29"
}
Frame {
msec: 8160
- hash: "7eb4027421fd6aa7d668a704e40a6e61"
+ hash: "ad3837dcf3e69274ac2918d796974f29"
}
Frame {
msec: 8176
- hash: "7eb4027421fd6aa7d668a704e40a6e61"
+ hash: "ad3837dcf3e69274ac2918d796974f29"
}
Frame {
msec: 8192
- hash: "7eb4027421fd6aa7d668a704e40a6e61"
+ hash: "ad3837dcf3e69274ac2918d796974f29"
}
Frame {
msec: 8208
- hash: "7eb4027421fd6aa7d668a704e40a6e61"
+ hash: "ad3837dcf3e69274ac2918d796974f29"
}
Frame {
msec: 8224
- hash: "7eb4027421fd6aa7d668a704e40a6e61"
+ hash: "ad3837dcf3e69274ac2918d796974f29"
}
Frame {
msec: 8240
- hash: "7eb4027421fd6aa7d668a704e40a6e61"
+ hash: "ad3837dcf3e69274ac2918d796974f29"
}
Frame {
msec: 8256
- hash: "7eb4027421fd6aa7d668a704e40a6e61"
+ hash: "ad3837dcf3e69274ac2918d796974f29"
}
Frame {
msec: 8272
- hash: "7eb4027421fd6aa7d668a704e40a6e61"
+ hash: "ad3837dcf3e69274ac2918d796974f29"
}
Frame {
msec: 8288
- hash: "7eb4027421fd6aa7d668a704e40a6e61"
+ hash: "ad3837dcf3e69274ac2918d796974f29"
}
Frame {
msec: 8304
- hash: "7eb4027421fd6aa7d668a704e40a6e61"
+ hash: "ad3837dcf3e69274ac2918d796974f29"
}
Frame {
msec: 8320
- hash: "7eb4027421fd6aa7d668a704e40a6e61"
+ hash: "ad3837dcf3e69274ac2918d796974f29"
}
Frame {
msec: 8336
- hash: "7eb4027421fd6aa7d668a704e40a6e61"
+ hash: "ad3837dcf3e69274ac2918d796974f29"
}
Frame {
msec: 8352
- hash: "7eb4027421fd6aa7d668a704e40a6e61"
+ hash: "ad3837dcf3e69274ac2918d796974f29"
}
Frame {
msec: 8368
- hash: "7eb4027421fd6aa7d668a704e40a6e61"
+ hash: "ad3837dcf3e69274ac2918d796974f29"
}
Frame {
msec: 8384
- hash: "7eb4027421fd6aa7d668a704e40a6e61"
+ hash: "ad3837dcf3e69274ac2918d796974f29"
}
Frame {
msec: 8400
- hash: "7eb4027421fd6aa7d668a704e40a6e61"
+ hash: "ad3837dcf3e69274ac2918d796974f29"
}
Mouse {
type: 2
@@ -2226,31 +2226,31 @@ VisualTest {
}
Frame {
msec: 8416
- hash: "7eb4027421fd6aa7d668a704e40a6e61"
+ hash: "ad3837dcf3e69274ac2918d796974f29"
}
Frame {
msec: 8432
- hash: "7eb4027421fd6aa7d668a704e40a6e61"
+ hash: "ad3837dcf3e69274ac2918d796974f29"
}
Frame {
msec: 8448
- hash: "7eb4027421fd6aa7d668a704e40a6e61"
+ hash: "ad3837dcf3e69274ac2918d796974f29"
}
Frame {
msec: 8464
- hash: "7eb4027421fd6aa7d668a704e40a6e61"
+ hash: "ad3837dcf3e69274ac2918d796974f29"
}
Frame {
msec: 8480
- hash: "7eb4027421fd6aa7d668a704e40a6e61"
+ hash: "ad3837dcf3e69274ac2918d796974f29"
}
Frame {
msec: 8496
- hash: "7eb4027421fd6aa7d668a704e40a6e61"
+ hash: "ad3837dcf3e69274ac2918d796974f29"
}
Frame {
msec: 8512
- hash: "7eb4027421fd6aa7d668a704e40a6e61"
+ hash: "ad3837dcf3e69274ac2918d796974f29"
}
Mouse {
type: 3
@@ -2262,31 +2262,31 @@ VisualTest {
}
Frame {
msec: 8528
- hash: "7eb4027421fd6aa7d668a704e40a6e61"
+ hash: "ad3837dcf3e69274ac2918d796974f29"
}
Frame {
msec: 8544
- hash: "b4f30663a9b21e42375645e970f57d0b"
+ hash: "49a6ed64f80094b41348eda19fa5a55e"
}
Frame {
msec: 8560
- hash: "6c12dbf4af8801573515b61123d4b1d7"
+ hash: "3ee42fb431d7824c1cd6ddf95af91d10"
}
Frame {
msec: 8576
- hash: "facc61397c734bb4409d5664dc059a14"
+ hash: "d807890cc0670eda9fac267769366771"
}
Frame {
msec: 8592
- hash: "897e15e37276454d11fac6a528e967a6"
+ hash: "50cb68de9ca0c3a8db1df58d7cbb0d21"
}
Frame {
msec: 8608
- hash: "cf8173519f1e042c227ff61c62308640"
+ hash: "0af06233156b3a469ce9e7d80a5767c0"
}
Frame {
msec: 8624
- hash: "d0fcda14ea4bcfebf04ccf99e292ac6a"
+ hash: "9b2c77f004e480fd485e092c08feaf81"
}
Frame {
msec: 8640
@@ -2294,35 +2294,35 @@ VisualTest {
}
Frame {
msec: 8656
- hash: "74b4ababa97def538f5340e88a4419a4"
+ hash: "6ed9b6118a0dc81c22af9fee108b7432"
}
Frame {
msec: 8672
- hash: "b96b5b64505b1814ddd42a52569d7fd9"
+ hash: "4d3aa8219edffe6fda316482821d4a64"
}
Frame {
msec: 8688
- hash: "0e3e07aad030b2075c4bc61b02ebe49e"
+ hash: "ea8a7104840254ac2706ca2635b8a95f"
}
Frame {
msec: 8704
- hash: "c5eebc652c58e3a44d5ed481100ef242"
+ hash: "a8569ef3287da9699809a2ad107b87b1"
}
Frame {
msec: 8720
- hash: "d4a74185304c126739af728ddda40e0c"
+ hash: "91d09653dbced4ecb3d711737cb89ca1"
}
Frame {
msec: 8736
- hash: "448572d3c1060b8311952429a7f9430d"
+ hash: "d5391f3b40f2dfada0336d889d438d69"
}
Frame {
msec: 8752
- hash: "00f64c09657a8afd6caa186efb6ad860"
+ hash: "27cd9690607f97cc84c2a0a4455feccb"
}
Frame {
msec: 8768
- hash: "2a360e6feaaf303e9ee63145085796e6"
+ hash: "f885588779a5de5d7d47f48bf9a2a6ee"
}
Frame {
msec: 8784
@@ -2419,7 +2419,7 @@ VisualTest {
Key {
type: 6
key: 16777249
- modifiers: 67108864
+ modifiers: 0
text: ""
autorep: false
count: 1
diff --git a/tests/auto/declarative/visual/animation/reanchor/reanchor.qml b/tests/auto/declarative/visual/animation/reanchor/reanchor.qml
index d80631f..e41a254 100644
--- a/tests/auto/declarative/visual/animation/reanchor/reanchor.qml
+++ b/tests/auto/declarative/visual/animation/reanchor/reanchor.qml
@@ -52,7 +52,7 @@ Rectangle {
}]
transitions: Transition {
- NumberAnimation { properties: "x,y,width,height" }
+ AnchorAnimation { }
}
MouseArea {