moved transient_for tag inheritance to settags aaad7bfd
Anselm R. Garbe · 2006-09-06 09:21 3 file(s) · +10 −10
client.c +2 −6
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 &&
dwm.h +1 −1
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
tag.c +7 −3
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);