URI: 
       merged focus{prev.next} into focusclient(1/-1) - dwm - dynamic window manager
  HTML git clone https://git.parazyd.org/dwm
   DIR Log
   DIR Files
   DIR Refs
   DIR README
   DIR LICENSE
       ---
   DIR commit 27b0595af72060d7cc406639b6c53a854f0a3590
   DIR parent 12d5a26fd279cc2370954929dedf88d0ab205a16
  HTML 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:
         M config.arg.h                        |       4 ++--
         M config.default.h                    |       4 ++--
         M dwm.h                               |       3 +--
         M layout.c                            |      36 ++++++++++++++-----------------
       
       4 files changed, 21 insertions(+), 26 deletions(-)
       ---
   DIR 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 }, \
   DIR 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 }, \
   DIR 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 */
   DIR 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);