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
This commit is contained in:
Georges Basile Stavracas Neto 2019-12-02 12:35:00 -03:00
parent 3387c8787c
commit 24d36e13ec
2 changed files with 11 additions and 7 deletions

View File

@ -55,11 +55,14 @@ var ScreenShield = class {
}); });
Main.ctrlAltTabManager.addGroup(this._lockScreenGroup, _("Lock"), 'changes-prevent-symbolic'); Main.ctrlAltTabManager.addGroup(this._lockScreenGroup, _("Lock"), 'changes-prevent-symbolic');
this._lockDialogGroup = new St.Widget({ x_expand: true, this._lockDialogGroup = new St.Widget({
x_expand: true,
y_expand: true, y_expand: true,
reactive: true, reactive: true,
can_focus: true,
pivot_point: new Graphene.Point({ x: 0.5, y: 0.5 }), pivot_point: new Graphene.Point({ x: 0.5, y: 0.5 }),
name: 'lockDialogGroup' }); name: 'lockDialogGroup',
});
this.actor.add_actor(this._lockScreenGroup); this.actor.add_actor(this._lockScreenGroup);
this.actor.add_actor(this._lockDialogGroup); this.actor.add_actor(this._lockDialogGroup);
@ -148,7 +151,7 @@ var ScreenShield = class {
// LoginDialog.cancel() will grab the key focus // LoginDialog.cancel() will grab the key focus
// on its own, so ensure it stays on lock screen // on its own, so ensure it stays on lock screen
// instead // instead
this._lockScreenGroup.grab_key_focus(); this._dialog.grab_key_focus();
} }
} }
@ -407,7 +410,7 @@ var ScreenShield = class {
this._lockScreenShown({ fadeToBlack, animateFade: false }); this._lockScreenShown({ fadeToBlack, animateFade: false });
} }
this._lockScreenGroup.grab_key_focus(); this._dialog.grab_key_focus();
} }
_lockScreenShown(params) { _lockScreenShown(params) {

View File

@ -397,6 +397,7 @@ var UnlockDialog = GObject.registerClass({
accessible_role: Atk.Role.WINDOW, accessible_role: Atk.Role.WINDOW,
style_class: 'login-dialog', style_class: 'login-dialog',
visible: false, visible: false,
can_focus: true,
reactive: true, reactive: true,
}); });