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 }, \ @@ -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 */ @@ -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); | 
