simplified dotile() 0ef6e310
Anselm R. Garbe · 2006-10-05 12:13 2 file(s) · +20 −37
dwm.h +0 −1
40 40
#define MOUSEMASK		(BUTTONMASK | PointerMotionMask)
41 41
/* other stuff used in different places */
42 42
#define BORDERPX		1
43 -
#define MINW			100
44 43
#define PROTODELWIN		1
45 44
46 45
enum { NetSupported, NetWMName, NetLast };		/* EWMH atoms */
view.c +20 −36
4 4
 */
5 5
#include "dwm.h"
6 6
7 +
#define MINDIM			100
8 +
7 9
/* static */
8 10
9 11
static Client *
138 140
				c->h = sh - 2 * BORDERPX - bh;
139 141
			}
140 142
			else if(i == 0) { /* master window */
143 +
				c->x = sx;
144 +
				if(stackpos == StackLeft)
145 +
					c->x += stackw;
146 +
				c->y = sy + bh;
141 147
				switch(stackpos) {
142 148
				case StackLeft:
143 -
					c->x = sx + stackw;
144 -
					c->y = sy + bh;
149 +
				case StackRight:
145 150
					c->w = master - 2 * BORDERPX;
146 151
					c->h = sh - bh - 2 * BORDERPX;
147 152
					break;
148 153
				case StackBottom:
149 -
					c->x = sx;
150 -
					c->y = sy + bh;
151 154
					c->w = sw - 2 * BORDERPX;
152 155
					c->h = master - 2 * BORDERPX;
153 156
					break;
154 -
				case StackRight:
155 -
					c->x = sx;
156 -
					c->y = sy + bh;
157 -
					c->w = master - 2 * BORDERPX;
158 -
					c->h = sh - bh - 2 * BORDERPX;
159 -
					break;
160 157
				}
161 158
			}
162 -
			else if(th > bh) {
163 -
				/* tile window */
159 +
			else if(th > bh) { /* tile window */
160 +
				c->x = sx;
161 +
				if(stackpos == StackRight)
162 +
					c->x += master;
164 163
				c->w = tw - 2 * BORDERPX;
165 164
				c->h = th - 2 * BORDERPX;
166 165
				switch(stackpos) {
167 166
				case StackLeft:
168 -
					c->x = sx;
167 +
				case StackRight:
169 168
					c->y = sy + (i - 1) * th + bh;
170 169
					if(i + 1 == n)
171 170
						c->h = sh - c->y - 2 * BORDERPX;
172 171
					break;
173 172
				case StackBottom:
174 -
					c->x = sx;
175 173
					c->y = sy + master + (i - 1) * th + bh;
176 174
					if(i + 1 == n)
177 175
						c->h = sh - c->y - 2 * BORDERPX;
178 176
					break;
179 -
				case StackRight:
180 -
					c->x = sx + master;
181 -
					c->y = sy + (i - 1) * th + bh;
182 -
					if(i + 1 == n)
183 -
						c->h = sh - c->y - 2 * BORDERPX;
184 -
					break;
185 177
				}
186 178
			}
187 179
			else { /* fallback if th < bh */
180 +
				c->x = sx;
181 +
				if(stackpos == StackRight)
182 +
					c->x += master;
183 +
				c->y = sy + bh;
184 +
				if(stackpos == StackBottom)
185 +
					c->y += master;
188 186
				c->w = stackw - 2 * BORDERPX;
189 187
				c->h = stackh - 2 * BORDERPX;
190 -
				switch(stackpos) {
191 -
				case StackLeft:
192 -
					c->x = sx;
193 -
					c->y = sy + bh;
194 -
					break;
195 -
				case StackBottom:
196 -
					c->x = sx;
197 -
					c->y = sy + master + bh;
198 -
					break;
199 -
				case StackRight:
200 -
					c->x = sx + master;
201 -
					c->y = sy + bh;
202 -
					break;
203 -
				}
204 188
			}
205 189
			resize(c, False, TopLeft);
206 190
			i++;
271 255
272 256
	s = stackpos == StackBottom ? sh - bh : sw;
273 257
	if(sel == getnext(clients)) {
274 -
		if(master + arg->i > s - MINW || master + arg->i < MINW)
258 +
		if(master + arg->i > s - MINDIM || master + arg->i < MINDIM)
275 259
			return;
276 260
		master += arg->i;
277 261
	}
278 262
	else {
279 -
		if(master - arg->i > s - MINW || master - arg->i < MINW)
263 +
		if(master - arg->i > s - MINDIM || master - arg->i < MINDIM)
280 264
			return;
281 265
		master -= arg->i;
282 266
	}