[gnome-shell] animation: Add parameter for hiding stopped Spinner actor



commit 8f4e91a738ee09e60fb193c5953aded1bed5915a
Author: Joonas Henriksson <joonas henriksson gmail com>
Date:   Mon Nov 18 22:24:05 2019 +0200

    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 6002a3754e..5cd9f3a207 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();
         }
     }
 });


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]