diff --git a/js/ui/main.js b/js/ui/main.js index 75ab45b2e..d9ffda79e 100644 --- a/js/ui/main.js +++ b/js/ui/main.js @@ -83,7 +83,17 @@ let _overridesSettings = null; let background = null; function _sessionUpdated() { - Meta.keybindings_set_custom_handler('panel-run-dialog', sessionMode.hasRunDialog ? openRunDialog : null); + wm.setCustomKeybindingHandler('panel-main-menu', + KeybindingMode.NORMAL | + KeybindingMode.OVERVIEW, + sessionMode.hasOverview ? Lang.bind(overview, overview.toggle) : null); + wm.allowKeybinding('overlay-key', KeybindingMode.NORMAL | + KeybindingMode.OVERVIEW); + + wm.setCustomKeybindingHandler('panel-run-dialog', + KeybindingMode.NORMAL | + KeybindingMode.OVERVIEW, + sessionMode.hasRunDialog ? openRunDialog : null); if (sessionMode.isGreeter) screenShield.showDialog(); } @@ -169,9 +179,7 @@ function start() { global.screen.override_workspace_layout(Meta.ScreenCorner.TOPLEFT, false, -1, 1); - Meta.keybindings_set_custom_handler('panel-main-menu', Lang.bind(overview, overview.toggle)); global.display.connect('overlay-key', Lang.bind(overview, overview.toggle)); - sessionMode.connect('update', _sessionUpdated); _sessionUpdated(); diff --git a/js/ui/windowManager.js b/js/ui/windowManager.js index ddebde585..4e3467d5a 100644 --- a/js/ui/windowManager.js +++ b/js/ui/windowManager.js @@ -104,36 +104,63 @@ const WindowManager = new Lang.Class({ this._shellwm.connect('filter-keybinding', Lang.bind(this, this._filterKeybinding)); this._workspaceSwitcherPopup = null; - Meta.keybindings_set_custom_handler('switch-to-workspace-left', - Lang.bind(this, this._showWorkspaceSwitcher)); - Meta.keybindings_set_custom_handler('switch-to-workspace-right', - Lang.bind(this, this._showWorkspaceSwitcher)); - Meta.keybindings_set_custom_handler('switch-to-workspace-up', - Lang.bind(this, this._showWorkspaceSwitcher)); - Meta.keybindings_set_custom_handler('switch-to-workspace-down', - Lang.bind(this, this._showWorkspaceSwitcher)); - Meta.keybindings_set_custom_handler('move-to-workspace-left', - Lang.bind(this, this._showWorkspaceSwitcher)); - Meta.keybindings_set_custom_handler('move-to-workspace-right', - Lang.bind(this, this._showWorkspaceSwitcher)); - Meta.keybindings_set_custom_handler('move-to-workspace-up', - Lang.bind(this, this._showWorkspaceSwitcher)); - Meta.keybindings_set_custom_handler('move-to-workspace-down', - Lang.bind(this, this._showWorkspaceSwitcher)); - Meta.keybindings_set_custom_handler('switch-windows', - Lang.bind(this, this._startAppSwitcher)); - Meta.keybindings_set_custom_handler('switch-group', - Lang.bind(this, this._startAppSwitcher)); - Meta.keybindings_set_custom_handler('switch-windows-backward', - Lang.bind(this, this._startAppSwitcher)); - Meta.keybindings_set_custom_handler('switch-group-backward', - Lang.bind(this, this._startAppSwitcher)); - Meta.keybindings_set_custom_handler('switch-panels', - Lang.bind(this, this._startA11ySwitcher)); - global.display.add_keybinding('open-application-menu', - new Gio.Settings({ schema: SHELL_KEYBINDINGS_SCHEMA }), - Meta.KeyBindingFlags.NONE, - Lang.bind(this, this._openAppMenu)); + this.setCustomKeybindingHandler('switch-to-workspace-left', + Main.KeybindingMode.NORMAL | + Main.KeybindingMode.OVERVIEW, + Lang.bind(this, this._showWorkspaceSwitcher)); + this.setCustomKeybindingHandler('switch-to-workspace-right', + Main.KeybindingMode.NORMAL | + Main.KeybindingMode.OVERVIEW, + Lang.bind(this, this._showWorkspaceSwitcher)); + this.setCustomKeybindingHandler('switch-to-workspace-up', + Main.KeybindingMode.NORMAL | + Main.KeybindingMode.OVERVIEW, + Lang.bind(this, this._showWorkspaceSwitcher)); + this.setCustomKeybindingHandler('switch-to-workspace-down', + Main.KeybindingMode.NORMAL | + Main.KeybindingMode.OVERVIEW, + Lang.bind(this, this._showWorkspaceSwitcher)); + this.setCustomKeybindingHandler('move-to-workspace-left', + Main.KeybindingMode.NORMAL | + Main.KeybindingMode.OVERVIEW, + Lang.bind(this, this._showWorkspaceSwitcher)); + this.setCustomKeybindingHandler('move-to-workspace-right', + Main.KeybindingMode.NORMAL | + Main.KeybindingMode.OVERVIEW, + Lang.bind(this, this._showWorkspaceSwitcher)); + this.setCustomKeybindingHandler('move-to-workspace-up', + Main.KeybindingMode.NORMAL | + Main.KeybindingMode.OVERVIEW, + Lang.bind(this, this._showWorkspaceSwitcher)); + this.setCustomKeybindingHandler('move-to-workspace-down', + Main.KeybindingMode.NORMAL | + Main.KeybindingMode.OVERVIEW, + Lang.bind(this, this._showWorkspaceSwitcher)); + this.setCustomKeybindingHandler('switch-windows', + Main.KeybindingMode.NORMAL, + Lang.bind(this, this._startAppSwitcher)); + this.setCustomKeybindingHandler('switch-group', + Main.KeybindingMode.NORMAL, + Lang.bind(this, this._startAppSwitcher)); + this.setCustomKeybindingHandler('switch-windows-backward', + Main.KeybindingMode.NORMAL, + Lang.bind(this, this._startAppSwitcher)); + this.setCustomKeybindingHandler('switch-group-backward', + Main.KeybindingMode.NORMAL, + Lang.bind(this, this._startAppSwitcher)); + this.setCustomKeybindingHandler('switch-panels', + Main.KeybindingMode.NORMAL | + Main.KeybindingMode.OVERVIEW | + Main.KeybindingMode.LOCK_SCREEN | + Main.KeybindingMode.UNLOCK_SCREEN | + Main.KeybindingMode.LOGIN_SCREEN, + Lang.bind(this, this._startA11ySwitcher)); + + this.addKeybinding('open-application-menu', + new Gio.Settings({ schema: SHELL_KEYBINDINGS_SCHEMA }), + Meta.KeyBindingFlags.NONE, + Main.KeybindingMode.NORMAL, + Lang.bind(this, this._openAppMenu)); Main.overview.connect('showing', Lang.bind(this, function() { for (let i = 0; i < this._dimmedWindows.length; i++) @@ -451,24 +478,6 @@ const WindowManager = new Lang.Class({ if (Main.modalCount > (Main.overview.visible ? 1 : 0)) return true; } - let action = Meta.prefs_get_keybinding_action(binding.get_name()); - switch (action) { - // left/right would effectively act as synonyms for up/down if we enabled them; - // but that could be considered confusing; we also disable them in the main view. - // - // case Meta.KeyBindingAction.WORKSPACE_LEFT: - // case Meta.KeyBindingAction.WORKSPACE_RIGHT: - case Meta.KeyBindingAction.WORKSPACE_UP: - case Meta.KeyBindingAction.WORKSPACE_DOWN: - return !Main.sessionMode.hasWorkspaces; - - case Meta.KeyBindingAction.PANEL_RUN_DIALOG: - case Meta.KeyBindingAction.COMMAND_2: - case Meta.KeyBindingAction.PANEL_MAIN_MENU: - case Meta.KeyBindingAction.OVERLAY_KEY: - case Meta.KeyBindingAction.SWITCH_PANELS: - return false; - } // There's little sense in implementing a keybinding in mutter and // not having it work in NORMAL mode; handle this case generically