environment: Apply autoReverse/repeatCount to all transitions
Like the old Tweener API, ease() allows to transition multiple
properties at once. If autoReverse or repeatCount are specified,
they should apply to all transitions, but right now we only set
them for the first one.
Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2007>
(cherry picked from commit cc5cc0d653
)
This commit is contained in:
parent
a2f6efa5e1
commit
fc680556f5
@ -201,21 +201,24 @@ function _easeActor(actor, params) {
|
|||||||
actor.set(params);
|
actor.set(params);
|
||||||
actor.restore_easing_state();
|
actor.restore_easing_state();
|
||||||
|
|
||||||
let transition = animatedProps.map(p => actor.get_transition(p))
|
const transitions = animatedProps
|
||||||
.find(t => t !== null);
|
.map(p => actor.get_transition(p))
|
||||||
|
.filter(t => t !== null);
|
||||||
|
|
||||||
|
transitions.forEach(t => t.set({ repeatCount, autoReverse }));
|
||||||
|
|
||||||
|
const [transition] = transitions;
|
||||||
|
|
||||||
if (transition && transition.delay)
|
if (transition && transition.delay)
|
||||||
transition.connect('started', () => prepare());
|
transition.connect('started', () => prepare());
|
||||||
else
|
else
|
||||||
prepare();
|
prepare();
|
||||||
|
|
||||||
if (transition) {
|
if (transition)
|
||||||
transition.set({ repeatCount, autoReverse });
|
|
||||||
transition.connect('stopped', (t, finished) => callback(finished));
|
transition.connect('stopped', (t, finished) => callback(finished));
|
||||||
} else {
|
else
|
||||||
callback(true);
|
callback(true);
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
function _easeActorProperty(actor, propName, target, params) {
|
function _easeActorProperty(actor, propName, target, params) {
|
||||||
// Avoid pointless difference with ease()
|
// Avoid pointless difference with ease()
|
||||||
|
Loading…
Reference in New Issue
Block a user