diff options
-rw-r--r-- | config.arg.h | 4 | ||||
-rw-r--r-- | config.default.h | 4 | ||||
-rw-r--r-- | dwm.h | 3 | ||||
-rw-r--r-- | layout.c | 36 |
4 files changed, 21 insertions, 26 deletions
diff --git a/config.arg.h b/config.arg.h index f137212..0740e00 100644 --- a/config.arg.h +++ b/config.arg.h @@ -52,8 +52,8 @@ static Key key[] = { \ { MODKEY, XK_i, incnmaster, "1" }, \ { MODKEY, XK_h, incmasterw, "-15" }, \ { MODKEY, XK_l, incmasterw, "15" }, \ - { MODKEY, XK_j, focusnext, NULL }, \ - { MODKEY, XK_k, focusprev, NULL }, \ + { MODKEY, XK_j, focusclient, "1" }, \ + { MODKEY, XK_k, focusclient, "-1" }, \ { MODKEY, XK_m, togglemax, NULL }, \ { MODKEY, XK_Return, zoom, NULL }, \ { MODKEY|ShiftMask, XK_space, toggleversatile,NULL }, \ diff --git a/config.default.h b/config.default.h index d8ec858..d629899 100644 --- a/config.default.h +++ b/config.default.h @@ -48,8 +48,8 @@ static Key key[] = { \ { MODKEY, XK_i, incnmaster, "1" }, \ { MODKEY, XK_g, incmasterw, "15" }, \ { MODKEY, XK_s, incmasterw, "-15" }, \ - { MODKEY, XK_Tab, focusnext, NULL }, \ - { MODKEY|ShiftMask, XK_Tab, focusprev, NULL }, \ + { MODKEY, XK_Tab, focusclient, "1" }, \ + { MODKEY|ShiftMask, XK_Tab, focusclient, "-1" }, \ { MODKEY, XK_m, togglemax, NULL }, \ { MODKEY, XK_Return, zoom, NULL }, \ { MODKEY|ShiftMask, XK_space, toggleversatile,NULL }, \ diff --git a/dwm.h b/dwm.h index 9e04a81..538018a 100644 --- a/dwm.h +++ b/dwm.h @@ -119,8 +119,7 @@ extern unsigned int textw(const char *text); /* return the width of text in px*/ extern void grabkeys(void); /* grab all keys defined in config.h */ /* layout.c */ -extern void focusnext(const char *arg); /* focuses next visible client, arg is ignored */ -extern void focusprev(const char *arg); /* focuses previous visible client, arg is ignored */ +extern void focusclient(const char *arg); /* focuses next(1)/previous(-1) visible client */ extern void incmasterw(const char *arg); /* increments the master width with arg's index value */ extern void incnmaster(const char *arg); /* increments nmaster with arg's index value */ extern void initlayouts(void); /* initialize layout array */ diff --git a/layout.c b/layout.c index 5d43187..1e8f113 100644 --- a/layout.c +++ b/layout.c @@ -70,30 +70,26 @@ LAYOUTS /* extern */ void -focusnext(const char *arg) { +focusclient(const char *arg) { Client *c; - if(!sel) + if(!sel || !arg) return; - for(c = sel->next; c && !isvisible(c); c = c->next); - if(!c) - for(c = clients; c && !isvisible(c); c = c->next); - if(c) { - focus(c); - restack(); - } -} - -void -focusprev(const char *arg) { - Client *c; - - if(!sel) + switch(atoi(arg)) { + default: return; - for(c = sel->prev; c && !isvisible(c); c = c->prev); - if(!c) { - for(c = clients; c && c->next; c = c->next); - for(; c && !isvisible(c); c = c->prev); + case 1: + for(c = sel->next; c && !isvisible(c); c = c->next); + if(!c) + for(c = clients; c && !isvisible(c); c = c->next); + break; + case -1: + for(c = sel->prev; c && !isvisible(c); c = c->prev); + if(!c) { + for(c = clients; c && c->next; c = c->next); + for(; c && !isvisible(c); c = c->prev); + } + break; } if(c) { focus(c); |