diff options
author | osch <oliver at luced de> | 2019-05-16 19:52:23 +0200 |
---|---|---|
committer | raveit65 <[email protected]> | 2019-06-03 10:30:39 +0200 |
commit | ddee987ba42fe793cc5a8573288ef5d48dfef510 (patch) | |
tree | 0b8807b182ea6ff37000244d560b62ab606dbd17 /src/core | |
parent | 06628329fc769efb2bcd83d9bd3a2dc742d94220 (diff) | |
download | marco-ddee987ba42fe793cc5a8573288ef5d48dfef510.tar.bz2 marco-ddee987ba42fe793cc5a8573288ef5d48dfef510.tar.xz |
Allow use of up/down arrow keys in alt+tab popup
Diffstat (limited to 'src/core')
-rw-r--r-- | src/core/keybindings.c | 37 | ||||
-rw-r--r-- | src/core/keybindings.h | 7 |
2 files changed, 34 insertions, 10 deletions
diff --git a/src/core/keybindings.c b/src/core/keybindings.c index 7863e392..7950d48e 100644 --- a/src/core/keybindings.c +++ b/src/core/keybindings.c @@ -2052,7 +2052,7 @@ process_tab_grab (MetaDisplay *display, { MetaKeyBindingAction action; gboolean popup_not_showing; - gboolean backward; + enum { NEXT, PREV, UP, DOWN, LEFT, RIGHT } direction; gboolean key_used; Window prev_xwindow; MetaWindow *prev_window; @@ -2198,7 +2198,7 @@ process_tab_grab (MetaDisplay *display, popup_not_showing = FALSE; key_used = FALSE; - backward = FALSE; + direction = NEXT; switch (action) { @@ -2213,7 +2213,7 @@ process_tab_grab (MetaDisplay *display, case META_KEYBINDING_ACTION_CYCLE_GROUP_BACKWARD: popup_not_showing = TRUE; key_used = TRUE; - backward = TRUE; + direction = PREV; break; case META_KEYBINDING_ACTION_SWITCH_PANELS: case META_KEYBINDING_ACTION_SWITCH_WINDOWS: @@ -2226,7 +2226,7 @@ process_tab_grab (MetaDisplay *display, case META_KEYBINDING_ACTION_SWITCH_WINDOWS_ALL_BACKWARD: case META_KEYBINDING_ACTION_SWITCH_GROUP_BACKWARD: key_used = TRUE; - backward = TRUE; + direction = PREV; break; default: break; @@ -2234,11 +2234,24 @@ process_tab_grab (MetaDisplay *display, /* Allow use of arrows while in window switching mode */ if (event->xkey.keycode == ARROW_RIGHT || event->xkey.keycode == ARROW_RIGHT_PAD) - key_used = TRUE; + { + key_used = TRUE; + direction = RIGHT; + } else if (event->xkey.keycode == ARROW_LEFT || event->xkey.keycode == ARROW_LEFT_PAD) { key_used = TRUE; - backward = TRUE; + direction = LEFT; + } + else if (event->xkey.keycode == ARROW_UP || event->xkey.keycode == ARROW_UP_PAD) + { + key_used = TRUE; + direction = UP; + } + else if (event->xkey.keycode == ARROW_DOWN || event->xkey.keycode == ARROW_DOWN_PAD) + { + key_used = TRUE; + direction = DOWN; } if (key_used) @@ -2246,13 +2259,17 @@ process_tab_grab (MetaDisplay *display, meta_topic (META_DEBUG_KEYBINDINGS, "Key pressed, moving tab focus in popup\n"); - if (event->xkey.state & ShiftMask) - backward = !backward; + if ((event->xkey.state & ShiftMask) && (direction == NEXT || direction == PREV)) + direction = (direction == NEXT) ? PREV : NEXT; - if (backward) + if (direction == PREV || direction == LEFT) meta_ui_tab_popup_backward (screen->tab_popup); - else + else if (direction == NEXT || direction == RIGHT) meta_ui_tab_popup_forward (screen->tab_popup); + else if (direction == DOWN) + meta_ui_tab_popup_down (screen->tab_popup); + else if (direction == UP) + meta_ui_tab_popup_up (screen->tab_popup); if (popup_not_showing) { diff --git a/src/core/keybindings.h b/src/core/keybindings.h index a34524a0..d5ea1afa 100644 --- a/src/core/keybindings.h +++ b/src/core/keybindings.h @@ -35,6 +35,13 @@ #define ARROW_RIGHT 114 #define ARROW_RIGHT_PAD 85 +#define ARROW_UP 111 +#define ARROW_UP_PAD 80 + +#define ARROW_DOWN 116 +#define ARROW_DOWN_PAD 88 + + #include "display-private.h" #include "window.h" |