screen.c
changeset 786 d9198e713310
parent 785 179a71394e49
child 788 a61fcdf7b4c1
equal deleted inserted replaced
785:179a71394e49 786:d9198e713310
    17 /* static */
    17 /* static */
    18 
    18 
    19 typedef struct {
    19 typedef struct {
    20 	const char *prop;
    20 	const char *prop;
    21 	const char *tags;
    21 	const char *tags;
    22 	Bool versatile;
    22 	Bool isversatile;
    23 } Rule;
    23 } Rule;
    24 
    24 
    25 typedef struct {
    25 typedef struct {
    26 	regex_t *propregex;
    26 	regex_t *propregex;
    27 	regex_t *tagregex;
    27 	regex_t *tagregex;
    50 	for(i = 0, c = clients; c; c = c->next)
    50 	for(i = 0, c = clients; c; c = c->next)
    51 		if(isvisible(c)) {
    51 		if(isvisible(c)) {
    52 			if(c->isbanned)
    52 			if(c->isbanned)
    53 				XMoveWindow(dpy, c->win, c->x, c->y);
    53 				XMoveWindow(dpy, c->win, c->x, c->y);
    54 			c->isbanned = False;
    54 			c->isbanned = False;
    55 			if(c->versatile)
    55 			if(c->isversatile)
    56 				continue;
    56 				continue;
    57 			c->ismax = False;
    57 			c->ismax = False;
    58 			nx = wax;
    58 			nx = wax;
    59 			ny = way;
    59 			ny = way;
    60 			if(i < nmaster) {
    60 			if(i < nmaster) {
   173 	XEvent ev;
   173 	XEvent ev;
   174 
   174 
   175 	drawstatus();
   175 	drawstatus();
   176 	if(!sel)
   176 	if(!sel)
   177 		return;
   177 		return;
   178 	if(sel->versatile || lt->arrange == versatile)
   178 	if(sel->isversatile || lt->arrange == versatile)
   179 		XRaiseWindow(dpy, sel->win);
   179 		XRaiseWindow(dpy, sel->win);
   180 	if(lt->arrange != versatile) {
   180 	if(lt->arrange != versatile) {
   181 		if(!sel->versatile)
   181 		if(!sel->isversatile)
   182 			XLowerWindow(dpy, sel->win);
   182 			XLowerWindow(dpy, sel->win);
   183 		for(c = nexttiled(clients); c; c = nexttiled(c->next)) {
   183 		for(c = nexttiled(clients); c; c = nexttiled(c->next)) {
   184 			if(c == sel)
   184 			if(c == sel)
   185 				continue;
   185 				continue;
   186 			XLowerWindow(dpy, c->win);
   186 			XLowerWindow(dpy, c->win);
   206 		snprintf(prop, sizeof prop, "%s:%s:%s",
   206 		snprintf(prop, sizeof prop, "%s:%s:%s",
   207 				ch.res_class ? ch.res_class : "",
   207 				ch.res_class ? ch.res_class : "",
   208 				ch.res_name ? ch.res_name : "", c->name);
   208 				ch.res_name ? ch.res_name : "", c->name);
   209 		for(i = 0; i < nrules; i++)
   209 		for(i = 0; i < nrules; i++)
   210 			if(regs[i].propregex && !regexec(regs[i].propregex, prop, 1, &tmp, 0)) {
   210 			if(regs[i].propregex && !regexec(regs[i].propregex, prop, 1, &tmp, 0)) {
   211 				c->versatile = rule[i].versatile;
   211 				c->isversatile = rule[i].isversatile;
   212 				for(j = 0; regs[i].tagregex && j < ntags; j++) {
   212 				for(j = 0; regs[i].tagregex && j < ntags; j++) {
   213 					if(!regexec(regs[i].tagregex, tags[j], 1, &tmp, 0)) {
   213 					if(!regexec(regs[i].tagregex, tags[j], 1, &tmp, 0)) {
   214 						matched = True;
   214 						matched = True;
   215 						c->tags[j] = True;
   215 						c->tags[j] = True;
   216 					}
   216 					}
   269 
   269 
   270 void
   270 void
   271 toggleversatile(Arg *arg) {
   271 toggleversatile(Arg *arg) {
   272 	if(!sel || lt->arrange == versatile)
   272 	if(!sel || lt->arrange == versatile)
   273 		return;
   273 		return;
   274 	sel->versatile = !sel->versatile;
   274 	sel->isversatile = !sel->isversatile;
   275 	lt->arrange();
   275 	lt->arrange();
   276 }
   276 }
   277 
   277 
   278 void
   278 void
   279 toggleview(Arg *arg) {
   279 toggleview(Arg *arg) {