aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/quick/util/qquickanimation.cpp15
-rw-r--r--src/quick/util/qquickanimation_p.h1
2 files changed, 10 insertions, 6 deletions
diff --git a/src/quick/util/qquickanimation.cpp b/src/quick/util/qquickanimation.cpp
index bc39355a48..f6e2e57cc8 100644
--- a/src/quick/util/qquickanimation.cpp
+++ b/src/quick/util/qquickanimation.cpp
@@ -89,6 +89,8 @@ QQuickAbstractAnimation::QQuickAbstractAnimation(QObject *parent)
QQuickAbstractAnimation::~QQuickAbstractAnimation()
{
Q_D(QQuickAbstractAnimation);
+ if (d->group)
+ setGroup(0); //remove from group
delete d->animationInstance;
}
@@ -431,15 +433,12 @@ void QQuickAbstractAnimation::setGroup(QQuickAnimationGroup *g)
if (d->group == g)
return;
if (d->group)
- static_cast<QQuickAnimationGroupPrivate *>(d->group->d_func())->animations.removeAll(this);
+ d->group->d_func()->animations.removeAll(this);
d->group = g;
- if (d->group && !static_cast<QQuickAnimationGroupPrivate *>(d->group->d_func())->animations.contains(this))
- static_cast<QQuickAnimationGroupPrivate *>(d->group->d_func())->animations.append(this);
-
- //if (g) //if removed from a group, then the group should no longer be the parent
- setParent(g);
+ if (d->group && !d->group->d_func()->animations.contains(this))
+ d->group->d_func()->animations.append(this);
}
/*!
@@ -1620,6 +1619,10 @@ void QQuickAnimationGroupPrivate::clear_animation(QQmlListProperty<QQuickAbstrac
QQuickAnimationGroup::~QQuickAnimationGroup()
{
+ Q_D(QQuickAnimationGroup);
+ for (int i = 0; i < d->animations.count(); ++i)
+ d->animations.at(i)->d_func()->group = 0;
+ d->animations.clear();
}
QQmlListProperty<QQuickAbstractAnimation> QQuickAnimationGroup::animations()
diff --git a/src/quick/util/qquickanimation_p.h b/src/quick/util/qquickanimation_p.h
index 5a5131999f..0fd746c4f5 100644
--- a/src/quick/util/qquickanimation_p.h
+++ b/src/quick/util/qquickanimation_p.h
@@ -139,6 +139,7 @@ private:
void notifyRunningChanged(bool running);
friend class QQuickBehavior;
friend class QQuickBehaviorPrivate;
+ friend class QQuickAnimationGroup;
};
class QQuickPauseAnimationPrivate;