From 8f4e91a738ee09e60fb193c5953aded1bed5915a Mon Sep 17 00:00:00 2001 From: Joonas Henriksson Date: Mon, 18 Nov 2019 22:24:05 +0200 Subject: [PATCH] animation: Add parameter for hiding stopped Spinner actor Not hiding leaves the empty actor space visible, which may have an undesirable effect on the parent element's size or spacing/padding. https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/832 --- js/ui/animation.js | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/js/ui/animation.js b/js/ui/animation.js index 6002a3754..5cd9f3a20 100644 --- a/js/ui/animation.js +++ b/js/ui/animation.js @@ -141,12 +141,15 @@ class Spinner extends AnimatedIcon { _init(size, params) { params = Params.parse(params, { animate: false, + hideOnStop: false, }); let file = Gio.File.new_for_uri('resource:///org/gnome/shell/theme/process-working.svg'); super._init(file, size); this.opacity = 0; this._animate = params.animate; + this._hideOnStop = params.hideOnStop; + this.visible = !this._hideOnStop; } _onDestroy() { @@ -156,6 +159,7 @@ class Spinner extends AnimatedIcon { play() { this.remove_all_transitions(); + this.show(); if (this._animate) { super.play(); @@ -179,11 +183,18 @@ class Spinner extends AnimatedIcon { opacity: 0, duration: SPINNER_ANIMATION_TIME, mode: Clutter.AnimationMode.LINEAR, - onComplete: () => super.stop(), + onComplete: () => { + super.stop(); + if (this._hideOnStop) + this.hide(); + }, }); } else { this.opacity = 0; super.stop(); + + if (this._hideOnStop) + this.hide(); } } });