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:
Florian Müllner 2021-10-21 19:50:18 +02:00
parent a2f6efa5e1
commit fc680556f5

View File

@ -201,20 +201,23 @@ 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) {