[gnome-shell/gbsneto/new-lock-screen-part2: 18/38] screenShield: Activate dialog when necessary



commit fbb1af0f476300161a641b848aaeb5f9fd540fc4
Author: Georges Basile Stavracas Neto <georges stavracas gmail com>
Date:   Thu Jan 30 11:44:43 2020 -0300

    screenShield: Activate dialog when necessary
    
    Activating a dialog is slightly different from opening it; the
    former is about showing the user authentication widgetry, while
    the latter is about creating it and pre-allocating the necessary
    resources.
    
    Activate the screen shield dialog when necessary.
    
    https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/872

 js/gdm/loginDialog.js | 9 +++++++--
 js/ui/screenShield.js | 5 +++--
 js/ui/unlockDialog.js | 4 ++++
 3 files changed, 14 insertions(+), 4 deletions(-)
---
diff --git a/js/gdm/loginDialog.js b/js/gdm/loginDialog.js
index 503245a574..519f97f790 100644
--- a/js/gdm/loginDialog.js
+++ b/js/gdm/loginDialog.js
@@ -1228,13 +1228,18 @@ var LoginDialog = GObject.registerClass({
         return GLib.SOURCE_REMOVE;
     }
 
+    activate() {
+        this._userList.grab_key_focus();
+        this.show();
+    }
+
     open() {
         Main.ctrlAltTabManager.addGroup(this,
                                         _("Login Window"),
                                         'dialog-password-symbolic',
                                         { sortGroup: CtrlAltTab.SortGroup.MIDDLE });
-        this._userList.grab_key_focus();
-        this.show();
+        this.activate();
+
         this.opacity = 0;
 
         Main.pushModal(this, { actionMode: Shell.ActionMode.LOGIN_SCREEN });
diff --git a/js/ui/screenShield.js b/js/ui/screenShield.js
index 5908ff5477..b2b7c8a953 100644
--- a/js/ui/screenShield.js
+++ b/js/ui/screenShield.js
@@ -159,8 +159,8 @@ var ScreenShield = class {
 
     _liftShield() {
         if (this._isLocked) {
-            if (this._ensureUnlockDialog(true /* allowCancel */))
-                this._hideLockScreen(true /* animate */);
+            this._ensureUnlockDialog(true /* allowCancel */);
+            this._dialog.activate();
         } else {
             this.deactivate(true /* animate */);
         }
@@ -437,6 +437,7 @@ var ScreenShield = class {
         }
 
         this._dialog.allowCancel = allowCancel;
+        this._dialog.grab_key_focus();
         return true;
     }
 
diff --git a/js/ui/unlockDialog.js b/js/ui/unlockDialog.js
index 7b9b0e723b..f158d057c3 100644
--- a/js/ui/unlockDialog.js
+++ b/js/ui/unlockDialog.js
@@ -527,6 +527,10 @@ var UnlockDialog = GObject.registerClass({
         return true;
     }
 
+    activate() {
+        this._showPrompt();
+    }
+
     popModal(timestamp) {
         if (this._isModal) {
             Main.popModal(this, timestamp);


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