panelMenu: Fix keynav of menu-less buttons

The left/right navigation between top bar buttons is usually
handled by a key-press handler on the button's menu.

However when a DummyMenu is used, the button itself serves as
fake menu actor and will get grabbed when "opening" the menu.
Due to that grab, the event is not propagated to the stage,
and regular keynav does not work.

To avoid the focus getting stuck in that case, add an explicit
key-press handler that bypasses the grab.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2734>
This commit is contained in:
Florian Müllner 2023-03-08 04:48:05 +01:00 committed by Marge Bot
parent cde7d44a28
commit ecb274cee0

View File

@ -108,6 +108,9 @@ var Button = GObject.registerClass({
this.menu = new PopupMenu.PopupDummyMenu(this);
else
this.setMenu(new PopupMenu.PopupMenu(this, menuAlignment, St.Side.TOP, 0));
this.connect('key-press-event',
(o, ev) => global.focus_manager.navigate_from_event(ev));
}
setSensitive(sensitive) {