[gnome-shell/gbsneto/new-lock-screen-part2: 33/36] screenShield: Rework key focus management



commit 727c84251d6e536c5658962b4fd4ec89acdc832f
Author: Georges Basile Stavracas Neto <georges stavracas gmail com>
Date:   Mon Dec 2 12:35:00 2019 -0300

    screenShield: Rework key focus management
    
    Instead of always grabbing key focus for the screen lock
    group, do that for the unlock dialog itself.
    
    https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/872

 js/ui/screenShield.js | 17 ++++++++++-------
 js/ui/unlockDialog.js |  1 +
 2 files changed, 11 insertions(+), 7 deletions(-)
---
diff --git a/js/ui/screenShield.js b/js/ui/screenShield.js
index b534a7b02f..4cb7f249df 100644
--- a/js/ui/screenShield.js
+++ b/js/ui/screenShield.js
@@ -57,11 +57,14 @@ var ScreenShield = class {
         });
         Main.ctrlAltTabManager.addGroup(this._lockScreenGroup, _("Lock"), 'changes-prevent-symbolic');
 
-        this._lockDialogGroup = new St.Widget({ x_expand: true,
-                                                y_expand: true,
-                                                reactive: true,
-                                                pivot_point: new Graphene.Point({ x: 0.5, y: 0.5 }),
-                                                name: 'lockDialogGroup' });
+        this._lockDialogGroup = new St.Widget({
+            x_expand: true,
+            y_expand: true,
+            reactive: true,
+            can_focus: true,
+            pivot_point: new Graphene.Point({ x: 0.5, y: 0.5 }),
+            name: 'lockDialogGroup',
+        });
 
         this.actor.add_actor(this._lockScreenGroup);
         this.actor.add_actor(this._lockDialogGroup);
@@ -173,7 +176,7 @@ var ScreenShield = class {
             // LoginDialog.cancel() will grab the key focus
             // on its own, so ensure it stays on lock screen
             // instead
-            this._lockScreenGroup.grab_key_focus();
+            this._dialog.grab_key_focus();
         }
     }
 
@@ -434,7 +437,7 @@ var ScreenShield = class {
             this._lockScreenShown({ fadeToBlack, animateFade: false });
         }
 
-        this._lockScreenGroup.grab_key_focus();
+        this._dialog.grab_key_focus();
     }
 
     _lockScreenShown(params) {
diff --git a/js/ui/unlockDialog.js b/js/ui/unlockDialog.js
index 9b8cfd9352..55dfa2cc4f 100644
--- a/js/ui/unlockDialog.js
+++ b/js/ui/unlockDialog.js
@@ -418,6 +418,7 @@ var UnlockDialog = GObject.registerClass({
             accessible_role: Atk.Role.WINDOW,
             style_class: 'login-dialog',
             visible: false,
+            can_focus: true,
             reactive: true,
         });
 


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