diff options
author | anselm@anselm1 <unknown> | 2008-05-19 20:07:12 +0100 |
---|---|---|
committer | anselm@anselm1 <unknown> | 2008-05-19 20:07:12 +0100 |
commit | 822101dd5bceadb12351dd5f9084d7745b10ec92 (patch) | |
tree | c9ed3b1c3181b4be933c826834688fc510365393 /tile.c | |
parent | 6bdef73a4f0c2a96f8984ddc10b55f1d753ab5fe (diff) |
merged tile.c again into dwm.c
Diffstat (limited to 'tile.c')
-rw-r--r-- | tile.c | 102 |
1 files changed, 0 insertions, 102 deletions
@@ -1,102 +0,0 @@ -/* See LICENSE file for copyright and license details. */ -int bx, by, bw, bh, blw, mx, my, mw, mh, tx, ty, tw, th, wx, wy, ww, wh; - -void setmfact(const char *arg); -void tile(void); -void tileresize(Client *c, int x, int y, int w, int h); -void updatetilegeom(void); - -void -setmfact(const char *arg) { - double d; - - if(!arg || lt->arrange != tile) - return; - else { - d = strtod(arg, NULL); - if(arg[0] == '-' || arg[0] == '+') - d += mfact; - if(d < 0.1 || d > 0.9) - return; - mfact = d; - } - updatetilegeom(); - arrange(); -} - -void -tile(void) { - int x, y, h, w; - unsigned int i, n; - Client *c; - - for(n = 0, c = nextunfloating(clients); c; c = nextunfloating(c->next), n++); - if(n == 0) - return; - - /* master */ - c = nextunfloating(clients); - - if(n == 1) - tileresize(c, wx, wy, ww - 2 * c->bw, wh - 2 * c->bw); - else - tileresize(c, mx, my, mw - 2 * c->bw, mh - 2 * c->bw); - - if(--n == 0) - return; - - /* tile stack */ - x = (tx > c->x + c->w) ? c->x + c->w + 2 * c->bw : tw; - y = ty; - w = (tx > c->x + c->w) ? wx + ww - x : tw; - h = th / n; - if(h < bh) - h = th; - - for(i = 0, c = nextunfloating(c->next); c; c = nextunfloating(c->next), i++) { - if(i + 1 == n) /* remainder */ - tileresize(c, x, y, w - 2 * c->bw, (ty + th) - y - 2 * c->bw); - else - tileresize(c, x, y, w - 2 * c->bw, h - 2 * c->bw); - if(h != th) - y = c->y + c->h + 2 * c->bw; - } -} - -void -tileresize(Client *c, int x, int y, int w, int h) { - resize(c, x, y, w, h, resizehints); - if(resizehints && ((c->h < bh) || (c->h > h) || (c->w < bh) || (c->w > w))) - /* client doesn't accept size constraints */ - resize(c, x, y, w, h, False); -} - -void -zoom(const char *arg) { - Client *c = sel; - - if(c == nextunfloating(clients)) - if(!c || !(c = nextunfloating(c->next))) - return; - if(lt->arrange == tile && !sel->isfloating) { - detach(c); - attach(c); - focus(c); - } - arrange(); -} - -void -updatetilegeom(void) { - /* master area geometry */ - mx = wx; - my = wy; - mw = mfact * ww; - mh = wh; - - /* tile area geometry */ - tx = mx + mw; - ty = wy; - tw = ww - mw; - th = wh; -} |