no, reodering floating clients definately breaks the manage() policy which attaches all clients zoomed (otherwise higher-weight clients couldn't be attached zoomed, which sucks) 0915da88
Anselm R. Garbe · 2006-09-06 09:13 3 file(s) · +18 −16
client.c +0 −2
247 247
		c->isfloat = trans
248 248
			|| (c->maxw && c->minw &&
249 249
				c->maxw == c->minw && c->maxh == c->minh);
250 -
	if(c->isfloat)
251 -
		c->weight = ntags;
252 250
253 251
	if(clients)
254 252
		clients->prev = c;
tag.c +3 −6
106 106
	if(!matched)
107 107
		for(i = 0; i < ntags; i++)
108 108
			c->tags[i] = seltag[i];
109 -
	if(!c->isfloat)
110 -
		for(c->weight = 0; c->weight < ntags && !c->tags[c->weight]; c->weight++);
109 +
	for(c->weight = 0; c->weight < ntags && !c->tags[c->weight]; c->weight++);
111 110
}
112 111
113 112
void
121 120
	for(i = 0; i < ntags; i++)
122 121
		sel->tags[i] = False;
123 122
	sel->tags[arg->i] = True;
124 -
	if(!sel->isfloat)
125 -
		sel->weight = arg->i;
123 +
	sel->weight = arg->i;
126 124
	arrange(NULL);
127 125
}
128 126
138 136
	for(i = 0; i < ntags && !sel->tags[i]; i++);
139 137
	if(i == ntags)
140 138
		sel->tags[arg->i] = True;
141 -
	if(!sel->isfloat)
142 -
		sel->weight = (i == ntags) ? arg->i : i;
139 +
	sel->weight = (i == ntags) ? arg->i : i;
143 140
	arrange(NULL);
144 141
}
view.c +15 −8
38 38
	clients = newclients;
39 39
}
40 40
41 +
static Client *
42 +
nexttiled(Client *c)
43 +
{
44 +
	for(c = getnext(c->next); c && c->isfloat; c = getnext(c->next));
45 +
	return c;
46 +
}
47 +
41 48
/* extern */
42 49
43 50
void (*arrange)(Arg *) = DEFMODE;
82 89
	maximized = False;
83 90
84 91
	w = sw - mw;
85 -
	for(n = 0, c = clients; c && !c->isfloat; c = c->next)
86 -
		if(isvisible(c))
92 +
	for(n = 0, c = clients; c; c = c->next)
93 +
		if(isvisible(c) && !c->isfloat)
87 94
			n++;
88 95
89 96
	if(n > 1)
186 193
	unsigned int n;
187 194
	Client *c;
188 195
189 -
	for(n = 0, c = clients; c && !c->isfloat; c = c->next)
190 -
		if(isvisible(c))
196 +
	for(n = 0, c = clients; c; c = c->next)
197 +
		if(isvisible(c) && !c->isfloat)
191 198
			n++;
192 199
	if(!sel || sel->isfloat || n < 2 || (arrange != dotile) || maximized)
193 200
		return;
311 318
	unsigned int n;
312 319
	Client *c;
313 320
314 -
	for(n = 0, c = clients; c && !c->isfloat; c = c->next)
315 -
		if(isvisible(c))
321 +
	for(n = 0, c = clients; c; c = c->next)
322 +
		if(isvisible(c) && !c->isfloat)
316 323
			n++;
317 324
	if(!sel || sel->isfloat || n < 2 || (arrange != dotile) || maximized)
318 325
		return;
319 326
320 -
	if((c = sel) == getnext(clients))
321 -
		if(!(c = getnext(c->next)) || c->isfloat)
327 +
	if((c = sel) == nexttiled(clients))
328 +
		if(!(c = nexttiled(c)))
322 329
			return;
323 330
	detach(c);
324 331
	c->next = clients;