dwm

my fork of dwm
Index Commits 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);