made tag/view/toggle{tag,view} work on pointer to tags-array, there was the need to define Key key[] not static to do this. split focusclient into focusnext/prev, fixed config.*.h's
This commit is contained in:
		
							parent
							
								
									e8792d95a1
								
							
						
					
					
						commit
						10bc0ce912
					
				
							
								
								
									
										78
									
								
								config.arg.h
									
									
									
									
									
								
							
							
						
						
									
										78
									
								
								config.arg.h
									
									
									
									
									
								
							| @ -37,7 +37,7 @@ static Layout layout[] = { \ | ||||
| /* key definitions */ | ||||
| #define MODKEY			Mod1Mask | ||||
| #define KEYS \ | ||||
| static Key key[] = { \ | ||||
| Key key[] = { \ | ||||
| 	/* modifier			key		function	argument */ \ | ||||
| 	{ MODKEY,			XK_p,		spawn, \ | ||||
| 		"exe=`dmenu_path | dmenu -fn '"FONT"' -nb '"NORMBGCOLOR"' -nf '"NORMFGCOLOR"'" \ | ||||
| @ -46,8 +46,8 @@ static Key key[] = { \ | ||||
| 		"exec urxvtcd -tr -bg '#111' -fg '#eee' -cr '#eee' +sb -fn '"FONT"'" }, \ | ||||
| 	{ MODKEY,			XK_space,	setlayout,	NULL }, \ | ||||
| 	{ MODKEY,			XK_b,		togglebar,	NULL }, \ | ||||
| 	{ MODKEY,			XK_j,		focusclient,	"1" }, \ | ||||
| 	{ MODKEY,			XK_k,		focusclient,	"-1" }, \ | ||||
| 	{ MODKEY,			XK_j,		focusnext,	NULL }, \ | ||||
| 	{ MODKEY,			XK_k,		focusprev,	NULL }, \ | ||||
| 	{ MODKEY,			XK_h,		addtomwfact,	"-0.05" }, \ | ||||
| 	{ MODKEY,			XK_l,		addtomwfact,	"0.05" }, \ | ||||
| 	{ MODKEY,			XK_m,		togglemax,	NULL }, \ | ||||
| @ -55,42 +55,42 @@ static Key key[] = { \ | ||||
| 	{ MODKEY|ShiftMask,		XK_space,	togglefloating,	NULL }, \ | ||||
| 	{ MODKEY|ShiftMask,		XK_c,		killclient,	NULL }, \ | ||||
| 	{ MODKEY,			XK_0,		view,		NULL }, \ | ||||
| 	{ MODKEY,			XK_1,		view,		"0" }, \ | ||||
| 	{ MODKEY,			XK_2,		view,		"1" }, \ | ||||
| 	{ MODKEY,			XK_3,		view,		"2" }, \ | ||||
| 	{ MODKEY,			XK_4,		view,		"3" }, \ | ||||
| 	{ MODKEY,			XK_5,		view,		"4" }, \ | ||||
| 	{ MODKEY,			XK_6,		view,		"5" }, \ | ||||
| 	{ MODKEY,			XK_7,		view,		"6" }, \ | ||||
| 	{ MODKEY,			XK_8,		view,		"7" }, \ | ||||
| 	{ MODKEY,			XK_9,		view,		"8" }, \ | ||||
| 	{ MODKEY|ControlMask,		XK_1,		toggleview,	"0" }, \ | ||||
| 	{ MODKEY|ControlMask,		XK_2,		toggleview,	"1" }, \ | ||||
| 	{ MODKEY|ControlMask,		XK_3,		toggleview,	"2" }, \ | ||||
| 	{ MODKEY|ControlMask,		XK_4,		toggleview,	"3" }, \ | ||||
| 	{ MODKEY|ControlMask,		XK_5,		toggleview,	"4" }, \ | ||||
| 	{ MODKEY|ControlMask,		XK_6,		toggleview,	"5" }, \ | ||||
| 	{ MODKEY|ControlMask,		XK_7,		toggleview,	"6" }, \ | ||||
| 	{ MODKEY|ControlMask,		XK_8,		toggleview,	"7" }, \ | ||||
| 	{ MODKEY|ControlMask,		XK_9,		toggleview,	"8" }, \ | ||||
| 	{ MODKEY,			XK_1,		view,		tags[0] }, \ | ||||
| 	{ MODKEY,			XK_2,		view,		tags[1] }, \ | ||||
| 	{ MODKEY,			XK_3,		view,		tags[2] }, \ | ||||
| 	{ MODKEY,			XK_4,		view,		tags[3] }, \ | ||||
| 	{ MODKEY,			XK_5,		view,		tags[4] }, \ | ||||
| 	{ MODKEY,			XK_6,		view,		tags[5] }, \ | ||||
| 	{ MODKEY,			XK_7,		view,		tags[6] }, \ | ||||
| 	{ MODKEY,			XK_8,		view,		tags[7] }, \ | ||||
| 	{ MODKEY,			XK_9,		view,		tags[8] }, \ | ||||
| 	{ MODKEY|ControlMask,		XK_1,		toggleview,	tags[0] }, \ | ||||
| 	{ MODKEY|ControlMask,		XK_2,		toggleview,	tags[1] }, \ | ||||
| 	{ MODKEY|ControlMask,		XK_3,		toggleview,	tags[2] }, \ | ||||
| 	{ MODKEY|ControlMask,		XK_4,		toggleview,	tags[3] }, \ | ||||
| 	{ MODKEY|ControlMask,		XK_5,		toggleview,	tags[4] }, \ | ||||
| 	{ MODKEY|ControlMask,		XK_6,		toggleview,	tags[5] }, \ | ||||
| 	{ MODKEY|ControlMask,		XK_7,		toggleview,	tags[6] }, \ | ||||
| 	{ MODKEY|ControlMask,		XK_8,		toggleview,	tags[7] }, \ | ||||
| 	{ MODKEY|ControlMask,		XK_9,		toggleview,	tags[8] }, \ | ||||
| 	{ MODKEY|ShiftMask,		XK_0,		tag,		NULL }, \ | ||||
| 	{ MODKEY|ShiftMask,		XK_1,		tag,		"0" }, \ | ||||
| 	{ MODKEY|ShiftMask,		XK_2,		tag,		"1" }, \ | ||||
| 	{ MODKEY|ShiftMask,		XK_3,		tag,		"2" }, \ | ||||
| 	{ MODKEY|ShiftMask,		XK_4,		tag,		"3" }, \ | ||||
| 	{ MODKEY|ShiftMask,		XK_5,		tag,		"4" }, \ | ||||
| 	{ MODKEY|ShiftMask,		XK_6,		tag,		"5" }, \ | ||||
| 	{ MODKEY|ShiftMask,		XK_7,		tag,		"6" }, \ | ||||
| 	{ MODKEY|ShiftMask,		XK_8,		tag,		"7" }, \ | ||||
| 	{ MODKEY|ShiftMask,		XK_9,		tag,		"8" }, \ | ||||
| 	{ MODKEY|ControlMask|ShiftMask,	XK_1,		toggletag,	"0" }, \ | ||||
| 	{ MODKEY|ControlMask|ShiftMask,	XK_2,		toggletag,	"1" }, \ | ||||
| 	{ MODKEY|ControlMask|ShiftMask,	XK_3,		toggletag,	"2" }, \ | ||||
| 	{ MODKEY|ControlMask|ShiftMask,	XK_4,		toggletag,	"3" }, \ | ||||
| 	{ MODKEY|ControlMask|ShiftMask,	XK_5,		toggletag,	"4" }, \ | ||||
| 	{ MODKEY|ControlMask|ShiftMask,	XK_6,		toggletag,	"5" }, \ | ||||
| 	{ MODKEY|ControlMask|ShiftMask,	XK_7,		toggletag,	"6" }, \ | ||||
| 	{ MODKEY|ControlMask|ShiftMask,	XK_8,		toggletag,	"7" }, \ | ||||
| 	{ MODKEY|ControlMask|ShiftMask,	XK_9,		toggletag,	"8" }, \ | ||||
| 	{ MODKEY|ShiftMask,		XK_1,		tag,		tags[0] }, \ | ||||
| 	{ MODKEY|ShiftMask,		XK_2,		tag,		tags[1] }, \ | ||||
| 	{ MODKEY|ShiftMask,		XK_3,		tag,		tags[2] }, \ | ||||
| 	{ MODKEY|ShiftMask,		XK_4,		tag,		tags[3] }, \ | ||||
| 	{ MODKEY|ShiftMask,		XK_5,		tag,		tags[4] }, \ | ||||
| 	{ MODKEY|ShiftMask,		XK_6,		tag,		tags[5] }, \ | ||||
| 	{ MODKEY|ShiftMask,		XK_7,		tag,		tags[6] }, \ | ||||
| 	{ MODKEY|ShiftMask,		XK_8,		tag,		tags[7] }, \ | ||||
| 	{ MODKEY|ShiftMask,		XK_9,		tag,		tags[8] }, \ | ||||
| 	{ MODKEY|ControlMask|ShiftMask,	XK_1,		toggletag,	tags[0] }, \ | ||||
| 	{ MODKEY|ControlMask|ShiftMask,	XK_2,		toggletag,	tags[1] }, \ | ||||
| 	{ MODKEY|ControlMask|ShiftMask,	XK_3,		toggletag,	tags[2] }, \ | ||||
| 	{ MODKEY|ControlMask|ShiftMask,	XK_4,		toggletag,	tags[3] }, \ | ||||
| 	{ MODKEY|ControlMask|ShiftMask,	XK_5,		toggletag,	tags[4] }, \ | ||||
| 	{ MODKEY|ControlMask|ShiftMask,	XK_6,		toggletag,	tags[5] }, \ | ||||
| 	{ MODKEY|ControlMask|ShiftMask,	XK_7,		toggletag,	tags[6] }, \ | ||||
| 	{ MODKEY|ControlMask|ShiftMask,	XK_8,		toggletag,	tags[7] }, \ | ||||
| 	{ MODKEY|ControlMask|ShiftMask,	XK_9,		toggletag,	tags[8] }, \ | ||||
| 	{ MODKEY|ShiftMask,		XK_q,		quit,		NULL }, \ | ||||
| }; | ||||
|  | ||||
| @ -38,14 +38,14 @@ static Layout layout[] = { \ | ||||
| /* key definitions */ | ||||
| #define MODKEY			Mod1Mask | ||||
| #define KEYS \ | ||||
| static Key key[] = { \ | ||||
| Key key[] = { \ | ||||
| 	/* modifier			key		function	argument */ \ | ||||
| 	{ MODKEY|ShiftMask,		XK_Return,	spawn,		"exec xterm" }, \ | ||||
| 	{ MODKEY,			XK_p,		spawn, 		"exe=`dmenu_path | dmenu` && exec $exe" }, \ | ||||
| 	{ MODKEY,			XK_space,	setlayout,	NULL }, \ | ||||
| 	{ MODKEY,			XK_b,		togglebar,	NULL }, \ | ||||
| 	{ MODKEY,			XK_j,		focusclient,	"1" }, \ | ||||
| 	{ MODKEY,			XK_k,		focusclient,	"-1" }, \ | ||||
| 	{ MODKEY,			XK_j,		focusnext,	NULL }, \ | ||||
| 	{ MODKEY,			XK_k,		focusprev,	NULL }, \ | ||||
| 	{ MODKEY,			XK_h,		addtomwfact,	"-0.05" }, \ | ||||
| 	{ MODKEY,			XK_l,		addtomwfact,	"0.05" }, \ | ||||
| 	{ MODKEY,			XK_m,		togglemax,	NULL }, \ | ||||
| @ -53,42 +53,42 @@ static Key key[] = { \ | ||||
| 	{ MODKEY|ShiftMask,		XK_space,	togglefloating,	NULL }, \ | ||||
| 	{ MODKEY|ShiftMask,		XK_c,		killclient,	NULL }, \ | ||||
| 	{ MODKEY,			XK_0,		view,		NULL }, \ | ||||
| 	{ MODKEY,			XK_1,		view,		"0" }, \ | ||||
| 	{ MODKEY,			XK_2,		view,		"1" }, \ | ||||
| 	{ MODKEY,			XK_3,		view,		"2" }, \ | ||||
| 	{ MODKEY,			XK_4,		view,		"3" }, \ | ||||
| 	{ MODKEY,			XK_5,		view,		"4" }, \ | ||||
| 	{ MODKEY,			XK_6,		view,		"5" }, \ | ||||
| 	{ MODKEY,			XK_7,		view,		"6" }, \ | ||||
| 	{ MODKEY,			XK_8,		view,		"7" }, \ | ||||
| 	{ MODKEY,			XK_9,		view,		"8" }, \ | ||||
| 	{ MODKEY|ControlMask,		XK_1,		toggleview,	"0" }, \ | ||||
| 	{ MODKEY|ControlMask,		XK_2,		toggleview,	"1" }, \ | ||||
| 	{ MODKEY|ControlMask,		XK_3,		toggleview,	"2" }, \ | ||||
| 	{ MODKEY|ControlMask,		XK_4,		toggleview,	"3" }, \ | ||||
| 	{ MODKEY|ControlMask,		XK_5,		toggleview,	"4" }, \ | ||||
| 	{ MODKEY|ControlMask,		XK_6,		toggleview,	"5" }, \ | ||||
| 	{ MODKEY|ControlMask,		XK_7,		toggleview,	"6" }, \ | ||||
| 	{ MODKEY|ControlMask,		XK_8,		toggleview,	"7" }, \ | ||||
| 	{ MODKEY|ControlMask,		XK_9,		toggleview,	"8" }, \ | ||||
| 	{ MODKEY,			XK_1,		view,		tags[0] }, \ | ||||
| 	{ MODKEY,			XK_2,		view,		tags[1] }, \ | ||||
| 	{ MODKEY,			XK_3,		view,		tags[2] }, \ | ||||
| 	{ MODKEY,			XK_4,		view,		tags[3] }, \ | ||||
| 	{ MODKEY,			XK_5,		view,		tags[4] }, \ | ||||
| 	{ MODKEY,			XK_6,		view,		tags[5] }, \ | ||||
| 	{ MODKEY,			XK_7,		view,		tags[6] }, \ | ||||
| 	{ MODKEY,			XK_8,		view,		tags[7] }, \ | ||||
| 	{ MODKEY,			XK_9,		view,		tags[8] }, \ | ||||
| 	{ MODKEY|ControlMask,		XK_1,		toggleview,	tags[0] }, \ | ||||
| 	{ MODKEY|ControlMask,		XK_2,		toggleview,	tags[1] }, \ | ||||
| 	{ MODKEY|ControlMask,		XK_3,		toggleview,	tags[2] }, \ | ||||
| 	{ MODKEY|ControlMask,		XK_4,		toggleview,	tags[3] }, \ | ||||
| 	{ MODKEY|ControlMask,		XK_5,		toggleview,	tags[4] }, \ | ||||
| 	{ MODKEY|ControlMask,		XK_6,		toggleview,	tags[5] }, \ | ||||
| 	{ MODKEY|ControlMask,		XK_7,		toggleview,	tags[6] }, \ | ||||
| 	{ MODKEY|ControlMask,		XK_8,		toggleview,	tags[7] }, \ | ||||
| 	{ MODKEY|ControlMask,		XK_9,		toggleview,	tags[8] }, \ | ||||
| 	{ MODKEY|ShiftMask,		XK_0,		tag,		NULL }, \ | ||||
| 	{ MODKEY|ShiftMask,		XK_1,		tag,		"0" }, \ | ||||
| 	{ MODKEY|ShiftMask,		XK_2,		tag,		"1" }, \ | ||||
| 	{ MODKEY|ShiftMask,		XK_3,		tag,		"2" }, \ | ||||
| 	{ MODKEY|ShiftMask,		XK_4,		tag,		"3" }, \ | ||||
| 	{ MODKEY|ShiftMask,		XK_5,		tag,		"4" }, \ | ||||
| 	{ MODKEY|ShiftMask,		XK_6,		tag,		"5" }, \ | ||||
| 	{ MODKEY|ShiftMask,		XK_7,		tag,		"6" }, \ | ||||
| 	{ MODKEY|ShiftMask,		XK_8,		tag,		"7" }, \ | ||||
| 	{ MODKEY|ShiftMask,		XK_9,		tag,		"8" }, \ | ||||
| 	{ MODKEY|ControlMask|ShiftMask,	XK_1,		toggletag,	"0" }, \ | ||||
| 	{ MODKEY|ControlMask|ShiftMask,	XK_2,		toggletag,	"1" }, \ | ||||
| 	{ MODKEY|ControlMask|ShiftMask,	XK_3,		toggletag,	"2" }, \ | ||||
| 	{ MODKEY|ControlMask|ShiftMask,	XK_4,		toggletag,	"3" }, \ | ||||
| 	{ MODKEY|ControlMask|ShiftMask,	XK_5,		toggletag,	"4" }, \ | ||||
| 	{ MODKEY|ControlMask|ShiftMask,	XK_6,		toggletag,	"5" }, \ | ||||
| 	{ MODKEY|ControlMask|ShiftMask,	XK_7,		toggletag,	"6" }, \ | ||||
| 	{ MODKEY|ControlMask|ShiftMask,	XK_8,		toggletag,	"7" }, \ | ||||
| 	{ MODKEY|ControlMask|ShiftMask,	XK_9,		toggletag,	"8" }, \ | ||||
| 	{ MODKEY|ShiftMask,		XK_1,		tag,		tags[0] }, \ | ||||
| 	{ MODKEY|ShiftMask,		XK_2,		tag,		tags[1] }, \ | ||||
| 	{ MODKEY|ShiftMask,		XK_3,		tag,		tags[2] }, \ | ||||
| 	{ MODKEY|ShiftMask,		XK_4,		tag,		tags[3] }, \ | ||||
| 	{ MODKEY|ShiftMask,		XK_5,		tag,		tags[4] }, \ | ||||
| 	{ MODKEY|ShiftMask,		XK_6,		tag,		tags[5] }, \ | ||||
| 	{ MODKEY|ShiftMask,		XK_7,		tag,		tags[6] }, \ | ||||
| 	{ MODKEY|ShiftMask,		XK_8,		tag,		tags[7] }, \ | ||||
| 	{ MODKEY|ShiftMask,		XK_9,		tag,		tags[8] }, \ | ||||
| 	{ MODKEY|ControlMask|ShiftMask,	XK_1,		toggletag,	tags[0] }, \ | ||||
| 	{ MODKEY|ControlMask|ShiftMask,	XK_2,		toggletag,	tags[1] }, \ | ||||
| 	{ MODKEY|ControlMask|ShiftMask,	XK_3,		toggletag,	tags[2] }, \ | ||||
| 	{ MODKEY|ControlMask|ShiftMask,	XK_4,		toggletag,	tags[3] }, \ | ||||
| 	{ MODKEY|ControlMask|ShiftMask,	XK_5,		toggletag,	tags[4] }, \ | ||||
| 	{ MODKEY|ControlMask|ShiftMask,	XK_6,		toggletag,	tags[5] }, \ | ||||
| 	{ MODKEY|ControlMask|ShiftMask,	XK_7,		toggletag,	tags[6] }, \ | ||||
| 	{ MODKEY|ControlMask|ShiftMask,	XK_8,		toggletag,	tags[7] }, \ | ||||
| 	{ MODKEY|ControlMask|ShiftMask,	XK_9,		toggletag,	tags[8] }, \ | ||||
| 	{ MODKEY|ShiftMask,		XK_q,		quit,		NULL }, \ | ||||
| }; | ||||
|  | ||||
							
								
								
									
										3
									
								
								dwm.h
									
									
									
									
									
								
							
							
						
						
									
										3
									
								
								dwm.h
									
									
									
									
									
								
							| @ -114,7 +114,8 @@ void grabkeys(void);			/* grab all keys defined in config.h */ | ||||
| 
 | ||||
| /* layout.c */ | ||||
| void arrange(void);			/* arranges all windows depending on the layout in use */ | ||||
| void focusclient(const char *arg);	/* focuses next(1)/previous(-1) visible client */ | ||||
| void focusnext(const char *arg);	/* focuses next visible client */ | ||||
| void focusprev(const char *arg);	/* focuses prev visible client */ | ||||
| const char *getsymbol(void);		/* returns symbol of enabled layout */ | ||||
| Bool isfloating(void);			/* returns True if floating layout is enabled */ | ||||
| Bool isarrange(void (*func)());		/* returns True if func is the layout function in use */ | ||||
|  | ||||
							
								
								
									
										20
									
								
								event.c
									
									
									
									
									
								
							
							
						
						
									
										20
									
								
								event.c
									
									
									
									
									
								
							| @ -1,6 +1,5 @@ | ||||
| /* See LICENSE file for copyright and license details. */ | ||||
| #include "dwm.h" | ||||
| #include <stdio.h> | ||||
| #include <stdlib.h> | ||||
| #include <X11/keysym.h> | ||||
| #include <X11/Xatom.h> | ||||
| @ -15,8 +14,6 @@ typedef struct { | ||||
| 	const char *arg; | ||||
| } Key; | ||||
| 
 | ||||
| KEYS | ||||
| 
 | ||||
| #define CLEANMASK(mask)		(mask & ~(numlockmask | LockMask)) | ||||
| #define MOUSEMASK		(BUTTONMASK | PointerMotionMask) | ||||
| 
 | ||||
| @ -112,29 +109,26 @@ resizemouse(Client *c) { | ||||
| 
 | ||||
| static void | ||||
| buttonpress(XEvent *e) { | ||||
| 	static char buf[32]; | ||||
| 	unsigned int i, x; | ||||
| 	Client *c; | ||||
| 	XButtonPressedEvent *ev = &e->xbutton; | ||||
| 
 | ||||
| 	buf[0] = 0; | ||||
| 	if(barwin == ev->window) { | ||||
| 		x = 0; | ||||
| 		for(i = 0; i < ntags; i++) { | ||||
| 			x += textw(tags[i]); | ||||
| 			if(ev->x < x) { | ||||
| 				snprintf(buf, sizeof buf, "%d", i); | ||||
| 				if(ev->button == Button1) { | ||||
| 					if(ev->state & MODKEY) | ||||
| 						tag(buf); | ||||
| 						tag(tags[i]); | ||||
| 					else | ||||
| 						view(buf); | ||||
| 						view(tags[i]); | ||||
| 				} | ||||
| 				else if(ev->button == Button3) { | ||||
| 					if(ev->state & MODKEY) | ||||
| 						toggletag(buf); | ||||
| 						toggletag(tags[i]); | ||||
| 					else | ||||
| 						toggleview(buf); | ||||
| 						toggleview(tags[i]); | ||||
| 				} | ||||
| 				return; | ||||
| 			} | ||||
| @ -257,7 +251,8 @@ expose(XEvent *e) { | ||||
| 
 | ||||
| static void | ||||
| keypress(XEvent *e) { | ||||
| 	static unsigned int len = sizeof key / sizeof key[0]; | ||||
| 	KEYS | ||||
| 	unsigned int len = sizeof key / sizeof key[0]; | ||||
| 	unsigned int i; | ||||
| 	KeySym keysym; | ||||
| 	XKeyEvent *ev = &e->xkey; | ||||
| @ -362,7 +357,8 @@ void (*handler[LASTEvent]) (XEvent *) = { | ||||
| 
 | ||||
| void | ||||
| grabkeys(void) { | ||||
| 	static unsigned int len = sizeof key / sizeof key[0]; | ||||
| 	KEYS | ||||
| 	unsigned int len = sizeof key / sizeof key[0]; | ||||
| 	unsigned int i; | ||||
| 	KeyCode code; | ||||
| 
 | ||||
|  | ||||
							
								
								
									
										34
									
								
								layout.c
									
									
									
									
									
								
							
							
						
						
									
										34
									
								
								layout.c
									
									
									
									
									
								
							| @ -42,22 +42,30 @@ arrange(void) { | ||||
| } | ||||
| 
 | ||||
| void | ||||
| focusclient(const char *arg) { | ||||
| focusnext(const char *arg) { | ||||
| 	Client *c; | ||||
|     | ||||
| 	if(!sel || !arg) | ||||
| 
 | ||||
| 	if(!sel) | ||||
| 		return; | ||||
| 	if(atoi(arg) < 0) { | ||||
| 		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); | ||||
| 		} | ||||
| 	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(); | ||||
| 	} | ||||
| 	else { | ||||
| 		for(c = sel->next; c && !isvisible(c); c = c->next); | ||||
| 		if(!c) | ||||
| 			for(c = clients; c && !isvisible(c); c = c->next); | ||||
| } | ||||
| 
 | ||||
| void | ||||
| focusprev(const char *arg) { | ||||
| 	Client *c; | ||||
| 
 | ||||
| 	if(!sel) | ||||
| 		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); | ||||
| 	} | ||||
| 	if(c) { | ||||
| 		focus(c); | ||||
|  | ||||
							
								
								
									
										26
									
								
								tag.c
									
									
									
									
									
								
							
							
						
						
									
										26
									
								
								tag.c
									
									
									
									
									
								
							| @ -40,6 +40,16 @@ persistconfig(Client *c) { | ||||
| 			PropModeReplace, (unsigned char *)prop, i); | ||||
| } | ||||
| 
 | ||||
| static unsigned int | ||||
| idxoftag(const char *tag) { | ||||
| 	unsigned int i; | ||||
| 
 | ||||
| 	for(i = 0; i < ntags; i++) | ||||
| 		if(tags[i] == tag) | ||||
| 			return i; | ||||
| 	return 0; | ||||
| } | ||||
| 
 | ||||
| /* extern */ | ||||
| 
 | ||||
| void | ||||
| @ -135,13 +145,13 @@ settags(Client *c, Client *trans) { | ||||
| 
 | ||||
| void | ||||
| tag(const char *arg) { | ||||
| 	int i; | ||||
| 	unsigned int i; | ||||
| 
 | ||||
| 	if(!sel) | ||||
| 		return; | ||||
| 	for(i = 0; i < ntags; i++) | ||||
| 		sel->tags[i] = arg == NULL; | ||||
| 	i = arg ? atoi(arg) : 0; | ||||
| 	i = idxoftag(arg); | ||||
| 	if(i >= 0 && i < ntags) | ||||
| 		sel->tags[i] = True; | ||||
| 	persistconfig(sel); | ||||
| @ -162,11 +172,11 @@ togglefloating(const char *arg) { | ||||
| 
 | ||||
| void | ||||
| toggletag(const char *arg) { | ||||
| 	int i, j; | ||||
| 	unsigned int i, j; | ||||
| 
 | ||||
| 	if(!sel) | ||||
| 		return; | ||||
| 	i = arg ? atoi(arg) : 0; | ||||
| 	i = idxoftag(arg); | ||||
| 	sel->tags[i] = !sel->tags[i]; | ||||
| 	for(j = 0; j < ntags && !sel->tags[j]; j++); | ||||
| 	if(j == ntags) | ||||
| @ -177,9 +187,9 @@ toggletag(const char *arg) { | ||||
| 
 | ||||
| void | ||||
| toggleview(const char *arg) { | ||||
| 	int i, j; | ||||
| 	unsigned int i, j; | ||||
| 
 | ||||
| 	i = arg ? atoi(arg) : 0; | ||||
| 	i = idxoftag(arg); | ||||
| 	seltag[i] = !seltag[i]; | ||||
| 	for(j = 0; j < ntags && !seltag[j]; j++); | ||||
| 	if(j == ntags) | ||||
| @ -189,11 +199,11 @@ toggleview(const char *arg) { | ||||
| 
 | ||||
| void | ||||
| view(const char *arg) { | ||||
| 	int i; | ||||
| 	unsigned int i; | ||||
| 
 | ||||
| 	for(i = 0; i < ntags; i++) | ||||
| 		seltag[i] = arg == NULL; | ||||
| 	i = arg ? atoi(arg) : 0; | ||||
| 	i = idxoftag(arg); | ||||
| 	if(i >= 0 && i < ntags) | ||||
| 		seltag[i] = True; | ||||
| 	arrange(); | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user
	 Anselm R. Garbe
						Anselm R. Garbe