summaryrefslogtreecommitdiff
path: root/src/cycle.c
diff options
context:
space:
mode:
authorKees van Veen <kees.vanveen@gmail.com>2012-02-13 10:02:13 +0100
committerOlivier Fourdan <ofourdan@redhat.com>2012-02-13 10:02:13 +0100
commita692e96c5486e2c1b01b6d186249b137331b376f (patch)
treed38a9c34e707214e1ac4f739ccfd2ba4444d0c5c /src/cycle.c
parent7727187a768f73d8d3647d28dfa7057b7a3e4288 (diff)
downloadxfwm4-a692e96c5486e2c1b01b6d186249b137331b376f.tar.gz
Navigate with arrows in task switcher (bug #4752)
Diffstat (limited to 'src/cycle.c')
-rw-r--r--src/cycle.c13
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");