applied Gottox' windowarea patch b003a35f
arg@mig29 · 2006-11-16 14:40 4 file(s) · +32 −32
dwm.h +1 −0
96 96
extern char stext[1024];			/* status text */
97 97
extern int bx, by, bw, bh, bmw;			/* bar geometry, bar mode label width */
98 98
extern int screen, sx, sy, sw, sh;		/* screen geometry */
99 +
extern int wax, way, wah, waw;			/* windowarea geometry */
99 100
extern unsigned int master, ntags, numlockmask;	/* master percent, number of tags, dynamic lock mask */
100 101
extern void (*handler[LASTEvent])(XEvent *);	/* event handler */
101 102
extern void (*arrange)(void);			/* arrange function, indicates mode  */
event.c +8 −8
48 48
			XSync(dpy, False);
49 49
			c->x = ocx + (ev.xmotion.x - x1);
50 50
			c->y = ocy + (ev.xmotion.y - y1);
51 -
			if(abs(sx + c->x) < SNAP)
52 -
				c->x = sx;
53 -
			else if(abs((sx + sw) - (c->x + c->w)) < SNAP)
54 -
				c->x = sw - c->w - 2 * BORDERPX;
55 -
			if(abs((sy + bh) - c->y) < SNAP)
56 -
				c->y = sy + bh;
57 -
			else if(abs((sy + sh) - (c->y + c->h)) < SNAP)
58 -
				c->y = sh - c->h - 2 * BORDERPX;
51 +
			if(abs(wax + c->x) < SNAP)
52 +
				c->x = wax;
53 +
			else if(abs((wax + waw) - (c->x + c->w)) < SNAP)
54 +
				c->x = wax + waw - c->w - 2 * BORDERPX;
55 +
			if(abs(way - c->y) < SNAP)
56 +
				c->y = way;
57 +
			else if(abs((way + wah) - (c->y + c->h)) < SNAP)
58 +
				c->y = way + wah - c->h - 2 * BORDERPX;
59 59
			resize(c, False, TopLeft);
60 60
			break;
61 61
		}
main.c +6 −1
18 18
19 19
char stext[1024];
20 20
Bool *seltag;
21 -
int bx, by, bw, bh, bmw, masterd, screen, sx, sy, sw, sh;
21 +
int bx, by, bw, bh, bmw, masterd, screen, sx, sy, sw, sh, wax, way, waw, wah;
22 22
unsigned int master, ntags, numlockmask;
23 23
Atom wmatom[WMLast], netatom[NetLast];
24 24
Bool running = True;
142 142
	XDefineCursor(dpy, barwin, cursor[CurNormal]);
143 143
	XMapRaised(dpy, barwin);
144 144
	strcpy(stext, "dwm-"VERSION);
145 +
	/* windowarea */
146 +
	wax = sx;
147 +
	way = bh;
148 +
	wah = sh - bh;
149 +
	waw = sw;
145 150
	/* pixmap for everything */
146 151
	dc.drawable = XCreatePixmap(dpy, root, sw, bh, DefaultDepth(dpy, screen));
147 152
	dc.gc = XCreateGC(dpy, root, 0, 0);
view.c +17 −23
49 49
		return;
50 50
51 51
	if((c->ismax = !c->ismax)) {
52 -
		c->rx = c->x; c->x = sx;
53 -
		c->ry = c->y; c->y = bh;
54 -
		c->rw = c->w; c->w = sw - 2 * BORDERPX;
55 -
		c->rh = c->h; c->h = sh - bh - 2 * BORDERPX;
52 +
		c->rx = c->x; c->x = wax;
53 +
		c->ry = c->y; c->y = way;
54 +
		c->rw = c->w; c->w = waw - 2 * BORDERPX;
55 +
		c->rh = c->h; c->h = wah - 2 * BORDERPX;
56 56
	}
57 57
	else {
58 58
		c->x = c->rx;
99 99
100 100
void
101 101
dotile(void) {
102 -
	unsigned int i, n, mpx, stackw, stackh, th;
102 +
	unsigned int i, n, mpx, stackw, th;
103 103
	Client *c;
104 104
105 105
	for(n = 0, c = nexttiled(clients); c; c = nexttiled(c->next))
106 106
		n++;
107 -
	mpx = (sw * master) / 1000;
108 -
	stackw = sw - mpx;
109 -
	stackh = sh - bh;
110 -
	th = stackh;
111 -
	if(n > 1)
112 -
		th /= (n - 1);
107 +
	mpx = (waw * master) / 1000;
108 +
	stackw = waw - mpx;
113 109
114 110
	for(i = 0, c = clients; c; c = c->next)
115 111
		if(isvisible(c)) {
118 114
				continue;
119 115
			}
120 116
			c->ismax = False;
121 -
			c->x = sx;
122 -
			c->y = sy + bh;
117 +
			c->x = wax;
118 +
			c->y = way;
123 119
			if(n == 1) { /* only 1 window */
124 -
				c->w = sw - 2 * BORDERPX;
125 -
				c->h = sh - 2 * BORDERPX - bh;
120 +
				c->w = waw - 2 * BORDERPX;
121 +
				c->h = wah - 2 * BORDERPX;
126 122
			}
127 123
			else if(i == 0) { /* master window */
128 -
				c->w = mpx - 2 * BORDERPX;
129 -
				c->h = sh - bh - 2 * BORDERPX;
124 +
				c->w = waw - stackw - 2 * BORDERPX;
125 +
				c->h = wah - 2 * BORDERPX;
126 +
				th = wah / (n - 1);
130 127
			}
131 128
			else {  /* tile window */
132 129
				c->x += mpx;
133 130
				c->w = stackw - 2 * BORDERPX;
134 131
				if(th > bh) {
135 -
					c->y = sy + (i - 1) * th + bh;
136 -
					if(i + 1 == n)
137 -
						c->h = sh - c->y - 2 * BORDERPX;
138 -
					else
139 -
						c->h = th - 2 * BORDERPX;
132 +
					c->y = way + (i - 1) * th;
133 +
					c->h = th - 2 * BORDERPX;
140 134
				}
141 135
				else /* fallback if th < bh */
142 -
					c->h = stackh - 2 * BORDERPX;
136 +
					c->h = wah - 2 * BORDERPX;
143 137
			}
144 138
			resize(c, False, TopLeft);
145 139
			i++;