dwm

dynamic window manager
git clone git://git.suckless.org/dwm
Log | Files | Refs | README | LICENSE

commit 27b0595af72060d7cc406639b6c53a854f0a3590
parent 12d5a26fd279cc2370954929dedf88d0ab205a16
Author: Anselm R. Garbe <arg@suckless.org>
Date:   Thu, 22 Feb 2007 15:25:19 +0100

merged focus{prev.next} into focusclient(1/-1)
Diffstat:
Mconfig.arg.h | 4++--
Mconfig.default.h | 4++--
Mdwm.h | 3+--
Mlayout.c | 36++++++++++++++++--------------------
4 files changed, 21 insertions(+), 26 deletions(-)

diff --git 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 @@ -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 @@ -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 @@ -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);