From ecb274cee066591591127e03e10a582e9f2c0397 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Florian=20M=C3=BCllner?= Date: Wed, 8 Mar 2023 04:48:05 +0100 Subject: [PATCH] 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: --- js/ui/panelMenu.js | 3 +++ 1 file changed, 3 insertions(+) diff --git a/js/ui/panelMenu.js b/js/ui/panelMenu.js index 75b6ba5f5..a5445ce87 100644 --- a/js/ui/panelMenu.js +++ b/js/ui/panelMenu.js @@ -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) {