diff options
author | Kees van Veen <kees.vanveen@gmail.com> | 2012-02-13 10:02:13 +0100 |
---|---|---|
committer | Olivier Fourdan <ofourdan@redhat.com> | 2012-02-13 10:02:13 +0100 |
commit | a692e96c5486e2c1b01b6d186249b137331b376f (patch) | |
tree | d38a9c34e707214e1ac4f739ccfd2ba4444d0c5c /src/cycle.c | |
parent | 7727187a768f73d8d3647d28dfa7057b7a3e4288 (diff) | |
download | xfwm4-a692e96c5486e2c1b01b6d186249b137331b376f.tar.gz |
Navigate with arrows in task switcher (bug #4752)
Diffstat (limited to 'src/cycle.c')
-rw-r--r-- | src/cycle.c | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/src/cycle.c b/src/cycle.c index 9098d35ee..fb3b43ba6 100644 --- a/src/cycle.c +++ b/src/cycle.c @@ -228,7 +228,7 @@ clientCycleEventFilter (XEvent * xevent, gpointer data) ClientCycleData *passdata; Client *c, *removed; eventFilterStatus status; - KeyCode cancel; + KeyCode cancel, left, right, up, down; int key, modifiers; gboolean key_pressed, cycling, gone; @@ -244,6 +244,10 @@ clientCycleEventFilter (XEvent * xevent, gpointer data) screen_info = c->screen_info; display_info = screen_info->display_info; cancel = screen_info->params->keys[KEY_CANCEL].keycode; + left = screen_info->params->keys[KEY_LEFT].keycode; + right = screen_info->params->keys[KEY_RIGHT].keycode; + up = screen_info->params->keys[KEY_UP].keycode; + down = screen_info->params->keys[KEY_DOWN].keycode; modifiers = (screen_info->params->keys[KEY_CYCLE_WINDOWS].modifier | screen_info->params->keys[KEY_CYCLE_REVERSE_WINDOWS].modifier); status = EVENT_FILTER_STOP; @@ -286,6 +290,13 @@ clientCycleEventFilter (XEvent * xevent, gpointer data) c2 = tabwinSelectHead (passdata->tabwin); cycling = FALSE; } + else if (xevent->xkey.keycode == up || xevent->xkey.keycode == down || xevent->xkey.keycode == left || xevent->xkey.keycode == right) + { + int rowdelta = (xevent->xkey.keycode == up ? -1 : xevent->xkey.keycode == down ? 1 : 0); + int coldelta = (xevent->xkey.keycode == left ? -1 : xevent->xkey.keycode == right ? 1 : 0); + TRACE ("Cycle: arrow"); + c2 = tabwinSelectDelta(passdata->tabwin, rowdelta, coldelta); + } else if (key == KEY_CYCLE_REVERSE_WINDOWS) { TRACE ("Cycle: previous"); |