diff --git a/js/ui/panel.js b/js/ui/panel.js index 8c3c48497..283a03174 100644 --- a/js/ui/panel.js +++ b/js/ui/panel.js @@ -1077,17 +1077,18 @@ const Panel = new Lang.Class({ return true; }, - openAppMenu: function() { + toggleAppMenu: function() { let indicator = this.statusArea.appMenu; if (!indicator) // appMenu not supported by current session mode return; let menu = indicator.menu; - if (!indicator.actor.reactive || menu.isOpen) + if (!indicator.actor.reactive) return; - menu.open(); - menu.actor.navigate_focus(null, Gtk.DirectionType.TAB_FORWARD, false); + menu.toggle(); + if (menu.isOpen) + menu.actor.navigate_focus(null, Gtk.DirectionType.TAB_FORWARD, false); }, set boxOpacity(value) { diff --git a/js/ui/windowManager.js b/js/ui/windowManager.js index c642d2c70..3617d5695 100644 --- a/js/ui/windowManager.js +++ b/js/ui/windowManager.js @@ -172,8 +172,9 @@ const WindowManager = new Lang.Class({ this.addKeybinding('open-application-menu', new Gio.Settings({ schema: SHELL_KEYBINDINGS_SCHEMA }), Meta.KeyBindingFlags.NONE, - Shell.KeyBindingMode.NORMAL, - Lang.bind(this, this._openAppMenu)); + Shell.KeyBindingMode.NORMAL | + Shell.KeyBindingMode.TOPBAR_POPUP, + Lang.bind(this, this._toggleAppMenu)); Main.overview.connect('showing', Lang.bind(this, function() { for (let i = 0; i < this._dimmedWindows.length; i++) @@ -679,8 +680,8 @@ const WindowManager = new Lang.Class({ Main.ctrlAltTabManager.popup(backwards, binding.get_name(), binding.get_mask()); }, - _openAppMenu : function(display, screen, window, event, binding) { - Main.panel.openAppMenu(); + _toggleAppMenu : function(display, screen, window, event, binding) { + Main.panel.toggleAppMenu(); }, _showWorkspaceSwitcher : function(display, screen, window, binding) {