[gnome-shell] loginDialog: Use more function scope variables inside _startTimedLogin



commit a8e17f73eca3379175f7703f3321f87e5fa9d0d5
Author: verdre <gitlab v0yd nl>
Date:   Tue Apr 17 15:19:44 2018 +0200

    loginDialog: Use more function scope variables inside _startTimedLogin
    
    Using function scope variables increases readability and prevents
    unwanted changes from outside while the batch is running.

 js/gdm/loginDialog.js | 45 +++++++++++++++++++++++----------------------
 1 file changed, 23 insertions(+), 22 deletions(-)
---
diff --git a/js/gdm/loginDialog.js b/js/gdm/loginDialog.js
index 22d9202ff..89178b8ee 100644
--- a/js/gdm/loginDialog.js
+++ b/js/gdm/loginDialog.js
@@ -991,20 +991,10 @@ var LoginDialog = new Lang.Class({
     },
 
     _blockTimedLoginUntilIdle() {
-        // This blocks timed login from starting until a few
-        // seconds after the user stops interacting with the
-        // login screen.
-        //
-        // We skip this step if the timed login delay is very
-        // short.
-        if ((this._timedLoginDelay - _TIMED_LOGIN_IDLE_THRESHOLD) <= 0)
-          return null;
-
         let hold = new Batch.Hold();
 
         this._timedLoginIdleTimeOutId = GLib.timeout_add_seconds(GLib.PRIORITY_DEFAULT, 
_TIMED_LOGIN_IDLE_THRESHOLD,
             () => {
-                this._timedLoginAnimationTime -= _TIMED_LOGIN_IDLE_THRESHOLD;
                 this._timedLoginIdleTimeOutId = 0;
                 hold.release();
                 return GLib.SOURCE_REMOVE;
@@ -1029,41 +1019,52 @@ var LoginDialog = new Lang.Class({
             this._timedLoginIdleTimeOutId = 0;
         }
 
-        this._timedLoginItem = null;
-        this._timedLoginDelay = delay;
-        this._timedLoginAnimationTime = delay;
+        let loginItem = null;
+        let animationTime;
 
         let tasks = [() => this._waitForItemForUser(userName),
 
                      () => {
-                         this._timedLoginItem = this._userList.getItemFromUserName(userName);
+                         loginItem = this._userList.getItemFromUserName(userName);
 
                          // If there is an animation running on the item, reset it.
-                         this._timedLoginItem.hideTimedLoginIndicator();
+                         loginItem.hideTimedLoginIndicator();
                      },
 
                      () => {
                          // If we're just starting out, start on the right item.
                          if (!this._userManager.is_loaded) {
-                             this._userList.jumpToItem(this._timedLoginItem);
+                             this._userList.jumpToItem(loginItem);
                          }
                      },
 
-                     this._blockTimedLoginUntilIdle,
+                     () => {
+                         // This blocks the timed login animation until a few
+                         // seconds after the user stops interacting with the
+                         // login screen.
+
+                         // We skip this step if the timed login delay is very short.
+                         if (delay > _TIMED_LOGIN_IDLE_THRESHOLD) {
+                             animationTime = delay - _TIMED_LOGIN_IDLE_THRESHOLD;
+                             return this._blockTimedLoginUntilIdle();
+                         } else {
+                             animationTime = delay;
+                         }
+                     },
 
                      () => {
                          // If idle timeout is done, make sure the timed login indicator is shown
-                         if (this._timedLoginDelay > _TIMED_LOGIN_IDLE_THRESHOLD &&
+                         if (delay > _TIMED_LOGIN_IDLE_THRESHOLD &&
                              this._authPrompt.actor.visible)
                              this._authPrompt.cancel();
 
-                         if (this._timedLoginDelay > _TIMED_LOGIN_IDLE_THRESHOLD || firstRun) {
-                             this._userList.scrollToItem(this._timedLoginItem);
-                             this._timedLoginItem.actor.grab_key_focus();
+                         if (delay > _TIMED_LOGIN_IDLE_THRESHOLD || firstRun) {
+                             this._userList.scrollToItem(loginItem);
+                             loginItem.actor.grab_key_focus();
                          }
                      },
 
-                     () => this._timedLoginItem.showTimedLoginIndicator(this._timedLoginAnimationTime),
+                     () => loginItem.showTimedLoginIndicator(animationTime),
 
                      () => {
                          this._timedLoginBatch = null;


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