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



commit e738a83c7dad856f1911bc46251fec695887602b
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 8e7481447c..ad82f3b5f4 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 2a9bf3735d..f22ac5f337 100644
--- a/js/ui/unlockDialog.js
+++ b/js/ui/unlockDialog.js
@@ -397,6 +397,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]