if (valid)
d->animations.at(ii)->setDefaultTarget(d->defaultProperty);
anim = d->animations.at(ii)->transition(actions, modified, direction, defaultTarget);
- ag->appendAnimation(anim);
+ if (anim)
+ ag->appendAnimation(anim);
}
//TODO: simplify/clarify logic
}
pa->setFromSourcedValue(&data->fromSourced);
pa->setAnimValue(data);
+ pa->setDuration(d->duration);
+ pa->setEasingCurve(d->easingCurve);
+ return initInstance(pa);
} else {
pa->setFromSourcedValue(0);
pa->setAnimValue(0);
delete pa;
delete data;
}
-
- pa->setDuration(d->duration);
- pa->setEasingCurve(d->easingCurve);
- return initInstance(pa);
+ return 0;
}
void QQuickPathAnimationUpdater::setValue(qreal v)
QAbstractAnimationJob *oldInstance = animationInstance;
animationInstance = q->transition(actions, properties, QQuickAbstractAnimation::Forward);
- if (oldInstance != animationInstance) {
- animationInstance->addAnimationChangeListener(this, QAbstractAnimationJob::Completion);
- if (oldInstance)
- delete oldInstance;
- }
- animationInstance->start();
- if (animationInstance->isStopped()) {
- running = false;
- emit q->completed();
+ if (oldInstance && oldInstance != animationInstance)
+ delete oldInstance;
+
+ if (animationInstance) {
+ if (oldInstance != animationInstance)
+ animationInstance->addAnimationChangeListener(this, QAbstractAnimationJob::Completion);
+ animationInstance->start();
+ if (animationInstance->isStopped()) {
+ running = false;
+ emit q->completed();
+ }
}
}
if (valid)
d->animations.at(ii)->setDefaultTarget(d->defaultProperty);
anim = d->animations.at(ii)->transition(actions, modified, direction, defaultTarget);
- inc == -1 ? ag->prependAnimation(anim) : ag->appendAnimation(anim);
+ if (anim)
+ inc == -1 ? ag->prependAnimation(anim) : ag->appendAnimation(anim);
}
return initInstance(ag);
if (valid)
d->animations.at(ii)->setDefaultTarget(d->defaultProperty);
anim = d->animations.at(ii)->transition(actions, modified, direction, defaultTarget);
- ag->appendAnimation(anim);
+ if (anim)
+ ag->appendAnimation(anim);
}
return initInstance(ag);
}
d->animationInstance = d->animation->transition(actions, properties, QQuickAbstractAnimation::Forward);
if (oldInstance && oldInstance != d->animationInstance)
delete oldInstance;
- d->animationInstance->setLoopCount(1);
- d->animationInstance->setDisableUserControl();
- d->animationInstance->start();
- d->animationInstance->pause();
- updateProgress();
+ if (d->animationInstance) {
+ d->animationInstance->setLoopCount(1);
+ d->animationInstance->setDisableUserControl();
+ d->animationInstance->start();
+ d->animationInstance->pause();
+ updateProgress();
+ }
}
}
QList<QQmlProperty> after;
QAbstractAnimationJob *prev = d->animationInstance;
d->animationInstance = d->animation->transition(actions, after, QQuickAbstractAnimation::Forward);
- if (d->animationInstance != prev) {
- d->animationInstance->addAnimationChangeListener(d, QAbstractAnimationJob::StateChange);
- if (prev)
- delete prev;
+ if (prev && prev != d->animationInstance)
+ delete prev;
+
+ if (d->animationInstance) {
+ if (d->animationInstance != prev)
+ d->animationInstance->addAnimationChangeListener(d, QAbstractAnimationJob::StateChange);
+ d->animationInstance->start();
+ d->blockRunningChanged = false;
}
- d->animationInstance->start();
- d->blockRunningChanged = false;
if (!after.contains(d->property))
QQmlPropertyPrivate::write(d->property, value, QQmlPropertyPrivate::BypassInterceptor | QQmlPropertyPrivate::DontRemoveBinding);
}