applied Gottox' windowarea patch
b003a35f
4 file(s) · +32 −32
| 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 */ |
| 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 | } |
| 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); |
|
| 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++; |
|