js: Use implicit animations for animatable properties
We now have everything in place to replace Tweener for all animatable properties with implicit animations, which has the following benefits: - they run entirely in C, while Tweener requires context switches to JS each frame - they are more reliable, as Tweener only detects when an animation is overwritten with another Tween, while Clutter considers any property change https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/22
This commit is contained in:
@ -5,7 +5,6 @@ const { Clutter, GLib, GObject, Meta, St } = imports.gi;
|
||||
const Mainloop = imports.mainloop;
|
||||
|
||||
const Main = imports.ui.main;
|
||||
const Tweener = imports.ui.tweener;
|
||||
|
||||
var ANIMATION_TIME = 100;
|
||||
var DISPLAY_TIMEOUT = 600;
|
||||
@ -182,10 +181,11 @@ class WorkspaceSwitcherPopup extends St.Widget {
|
||||
}
|
||||
|
||||
_show() {
|
||||
Tweener.addTween(this._container, { opacity: 255,
|
||||
time: ANIMATION_TIME / 1000,
|
||||
transition: 'easeOutQuad'
|
||||
});
|
||||
this._container.ease({
|
||||
opacity: 255,
|
||||
duration: ANIMATION_TIME,
|
||||
mode: Clutter.AnimationMode.EASE_OUT_QUAD
|
||||
});
|
||||
this.show();
|
||||
}
|
||||
|
||||
@ -204,11 +204,12 @@ class WorkspaceSwitcherPopup extends St.Widget {
|
||||
_onTimeout() {
|
||||
Mainloop.source_remove(this._timeoutId);
|
||||
this._timeoutId = 0;
|
||||
Tweener.addTween(this._container, { opacity: 0.0,
|
||||
time: ANIMATION_TIME / 1000,
|
||||
transition: 'easeOutQuad',
|
||||
onComplete: () => this.destroy()
|
||||
});
|
||||
this._container.ease({
|
||||
opacity: 0.0,
|
||||
duration: ANIMATION_TIME,
|
||||
mode: Clutter.AnimationMode.EASE_OUT_QUAD,
|
||||
onComplete: () => this.destroy()
|
||||
});
|
||||
return GLib.SOURCE_REMOVE;
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user