yet another small fix and simplification of dotile acdea319
Anselm R. Garbe · 2006-10-06 11:37 1 file(s) · +10 −18
view.c +10 −18
95 95
	restack();
96 96
}
97 97
98 -
/* This algorithm is based on a (M)aster area and a (S)tacking area.
99 -
 * It supports following arrangements:
100 -
 * 	SSMMM	MMMMM	MMMSS
101 -
 * 	SSMMM	SSSSS	MMMSS
102 -
 */
103 98
void
104 99
dotile(Arg *arg) {
105 -
	unsigned int i, n, md, stackw, stackh, th;
100 +
	unsigned int i, n, mpx, stackw, stackh, th;
106 101
	Client *c;
107 102
108 103
	for(n = 0, c = nexttiled(clients); c; c = nexttiled(c->next))
109 104
		n++;
110 105
111 -
	md = (sw * master) / 1000;
112 -
	stackw = sw - md;
106 +
	mpx = (sw * master) / 1000;
107 +
	stackw = sw - mpx;
113 108
	stackh = sh - bh;
114 109
115 110
	th = stackh;
116 111
	if(n > 1)
117 112
		th /= (n - 1);
118 113
119 -
	for(i = 0, c = clients; c; c = c->next) {
114 +
	for(i = 0, c = clients; c; c = c->next, i++)
120 115
		if(isvisible(c)) {
121 116
			if(c->isfloat) {
122 117
				resize(c, True, TopLeft);
130 125
				c->h = sh - 2 * BORDERPX - bh;
131 126
			}
132 127
			else if(i == 0) { /* master window */
133 -
				c->w = md - 2 * BORDERPX;
128 +
				c->w = mpx - 2 * BORDERPX;
134 129
				c->h = sh - bh - 2 * BORDERPX;
135 130
			}
136 131
			else {  /* tile window */
137 -
				c->x += md;
132 +
				c->x += mpx;
133 +
				c->w = stackw - 2 * BORDERPX;
138 134
				if(th > bh) {
139 135
					c->y = sy + (i - 1) * th + bh;
140 136
					if(i + 1 == n)
141 137
						c->h = sh - c->y - 2 * BORDERPX;
142 -
					c->w = stackw - 2 * BORDERPX;
143 -
					c->h = th - 2 * BORDERPX;
138 +
					else
139 +
						c->h = th - 2 * BORDERPX;
144 140
				}
145 -
				else { /* fallback if th < bh */
146 -
					c->w = stackw - 2 * BORDERPX;
141 +
				else /* fallback if th < bh */
147 142
					c->h = stackh - 2 * BORDERPX;
148 -
				}
149 143
			}
150 144
			resize(c, False, TopLeft);
151 -
			i++;
152 145
		}
153 146
		else
154 147
			ban(c);
155 -
	}
156 148
	if(!sel || !isvisible(sel)) {
157 149
		for(c = stack; c && !isvisible(c); c = c->snext);
158 150
		focus(c);