lockScreen: Extend modal grab to entire uiGroup
Main.pushModal() used to ensure a compositor grab, but didn't take an input grab. That changed when porting to ClutterGrab, so by limiting the grab to the shield/dialog, it is no longer possible to access top bar menus when the screen is locked. To fix that, take the grab on the whole uiGroup so that the top bar is included. https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/5470 Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2298>
This commit is contained in:
parent
3290ef4eb6
commit
3e7ce18dcf
@ -196,7 +196,7 @@ var ScreenShield = class {
|
||||
if (this._isModal)
|
||||
return true;
|
||||
|
||||
let grab = Main.pushModal(this.actor, { actionMode: Shell.ActionMode.LOCK_SCREEN });
|
||||
let grab = Main.pushModal(Main.uiGroup, { actionMode: Shell.ActionMode.LOCK_SCREEN });
|
||||
|
||||
// We expect at least a keyboard grab here
|
||||
this._isModal = (grab.get_seat_state() & Clutter.GrabState.KEYBOARD) !== 0;
|
||||
|
@ -873,7 +873,7 @@ var UnlockDialog = GObject.registerClass({
|
||||
timestamp,
|
||||
actionMode: Shell.ActionMode.UNLOCK_SCREEN,
|
||||
};
|
||||
let grab = Main.pushModal(this, modalParams);
|
||||
let grab = Main.pushModal(Main.uiGroup, modalParams);
|
||||
if (grab.get_seat_state() !== Clutter.GrabState.ALL) {
|
||||
Main.popModal(grab);
|
||||
return false;
|
||||
|
Loading…
Reference in New Issue
Block a user