summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--config.arg.h4
-rw-r--r--config.default.h4
-rw-r--r--dwm.h3
-rw-r--r--layout.c36
4 files changed, 21 insertions, 26 deletions
diff --git a/config.arg.h b/config.arg.h
index f1372127..0740e009 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 d8ec8586..d629899d 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 9e04a81c..538018a7 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 5d43187d..1e8f1134 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);