changeset 786 | d9198e713310 |
parent 785 | 179a71394e49 |
child 788 | a61fcdf7b4c1 |
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) { |