moved transient_for tag inheritance to settags
aaad7bfd
3 file(s) · +10 −10
| 199 | 199 | manage(Window w, XWindowAttributes *wa) |
|
| 200 | 200 | { |
|
| 201 | 201 | unsigned int i; |
|
| 202 | - | Client *c, *tc; |
|
| 202 | + | Client *c; |
|
| 203 | 203 | Window trans; |
|
| 204 | 204 | XSetWindowAttributes twa; |
|
| 205 | 205 | ||
| 238 | 238 | CWOverrideRedirect | CWBackPixmap | CWEventMask, &twa); |
|
| 239 | 239 | ||
| 240 | 240 | grabbuttons(c, False); |
|
| 241 | - | if((tc = getclient(trans))) /* inherit tags */ |
|
| 242 | - | for(i = 0; i < ntags; i++) |
|
| 243 | - | c->tags[i] = tc->tags[i]; |
|
| 244 | - | else |
|
| 245 | - | settags(c); |
|
| 241 | + | settags(c, getclient(trans)); |
|
| 246 | 242 | if(!c->isfloat) |
|
| 247 | 243 | c->isfloat = trans |
|
| 248 | 244 | || (c->maxw && c->minw && |
|
| 115 | 115 | extern void initrregs(); |
|
| 116 | 116 | extern Client *getnext(Client *c); |
|
| 117 | 117 | extern Client *getprev(Client *c); |
|
| 118 | - | extern void settags(Client *c); |
|
| 118 | + | extern void settags(Client *c, Client *trans); |
|
| 119 | 119 | extern void tag(Arg *arg); |
|
| 120 | 120 | extern void toggletag(Arg *arg); |
|
| 121 | 121 |
| 76 | 76 | } |
|
| 77 | 77 | ||
| 78 | 78 | void |
|
| 79 | - | settags(Client *c) |
|
| 79 | + | settags(Client *c, Client *trans) |
|
| 80 | 80 | { |
|
| 81 | 81 | char prop[512]; |
|
| 82 | 82 | unsigned int i, j; |
|
| 83 | 83 | regmatch_t tmp; |
|
| 84 | - | Bool matched = False; |
|
| 84 | + | Bool matched = trans != NULL; |
|
| 85 | 85 | XClassHint ch; |
|
| 86 | 86 | ||
| 87 | - | if(XGetClassHint(dpy, c->win, &ch)) { |
|
| 87 | + | if(matched) { |
|
| 88 | + | for(i = 0; i < ntags; i++) |
|
| 89 | + | c->tags[i] = trans->tags[i]; |
|
| 90 | + | } |
|
| 91 | + | else if(XGetClassHint(dpy, c->win, &ch)) { |
|
| 88 | 92 | snprintf(prop, sizeof(prop), "%s:%s:%s", |
|
| 89 | 93 | ch.res_class ? ch.res_class : "", |
|
| 90 | 94 | ch.res_name ? ch.res_name : "", c->name); |