diff options
author | Anselm R. Garbe <arg@10kloc.org> | 2006-08-22 16:50:21 +0200 |
---|---|---|
committer | Anselm R. Garbe <arg@10kloc.org> | 2006-08-22 16:50:21 +0200 |
commit | aa13727067af829b94461eb36aa029297ed8e6b9 (patch) | |
tree | aaaae4d7d65711bfb5c2153b60fdb33990564e6b /tag.c | |
parent | 595028614bc94c1733b28725dcf9777b0a47ad24 (diff) | |
download | dwm-aa13727067af829b94461eb36aa029297ed8e6b9.tar.gz |
separated several functions into view.c
Diffstat (limited to 'tag.c')
-rw-r--r-- | tag.c | 186 |
1 files changed, 0 insertions, 186 deletions
@@ -30,97 +30,8 @@ RULES static RReg *rreg = NULL; static unsigned int len = 0; -void (*arrange)(Arg *) = DEFMODE; - /* extern */ -void -dofloat(Arg *arg) -{ - Client *c; - - for(c = clients; c; c = c->next) { - c->ismax = False; - if(isvisible(c)) { - resize(c, True, TopLeft); - } - else - ban(c); - } - if(!sel || !isvisible(sel)) - sel = getnext(clients); - if(sel) - focus(sel); - else - XSetInputFocus(dpy, root, RevertToPointerRoot, CurrentTime); - restack(); -} - -void -dotile(Arg *arg) -{ - int h, i, n, w; - Client *c; - - w = sw - mw; - for(n = 0, c = clients; c; c = c->next) - if(isvisible(c) && !c->isfloat) - n++; - - if(n > 1) - h = (sh - bh) / (n - 1); - else - h = sh - bh; - - for(i = 0, c = clients; c; c = c->next) { - c->ismax = False; - if(isvisible(c)) { - if(c->isfloat) { - resize(c, True, TopLeft); - continue; - } - if(n == 1) { - c->x = sx; - c->y = sy + bh; - c->w = sw - 2; - c->h = sh - 2 - bh; - } - else if(i == 0) { - c->x = sx; - c->y = sy + bh; - c->w = mw - 2; - c->h = sh - 2 - bh; - } - else if(h > bh) { - c->x = sx + mw; - c->y = sy + (i - 1) * h + bh; - c->w = w - 2; - if(i + 1 == n) - c->h = sh - c->y - 2; - else - c->h = h - 2; - } - else { /* fallback if h < bh */ - c->x = sx + mw; - c->y = sy + bh; - c->w = w - 2; - c->h = sh - 2 - bh; - } - resize(c, False, TopLeft); - i++; - } - else - ban(c); - } - if(!sel || !isvisible(sel)) - sel = getnext(clients); - if(sel) - focus(sel); - else - XSetInputFocus(dpy, root, RevertToPointerRoot, CurrentTime); - restack(); -} - Client * getnext(Client *c) { @@ -164,69 +75,6 @@ initrregs() } } -Bool -isvisible(Client *c) -{ - unsigned int i; - - for(i = 0; i < ntags; i++) - if(c->tags[i] && seltag[i]) - return True; - return False; -} - -void -restack() -{ - static unsigned int nwins = 0; - static Window *wins = NULL; - unsigned int f, fi, m, mi, n; - Client *c; - XEvent ev; - - for(f = 0, m = 0, c = clients; c; c = c->next) - if(isvisible(c)) { - if(c->isfloat || arrange == dofloat) - f++; - else - m++; - } - if(!(n = 2 * (f + m))) { - drawstatus(); - return; - } - if(nwins < n) { - nwins = n; - wins = erealloc(wins, nwins * sizeof(Window)); - } - - fi = 0; - mi = 2 * f; - if(sel->isfloat || arrange == dofloat) { - wins[fi++] = sel->title; - wins[fi++] = sel->win; - } - else { - wins[mi++] = sel->title; - wins[mi++] = sel->win; - } - for(c = clients; c; c = c->next) - if(isvisible(c) && c != sel) { - if(c->isfloat || arrange == dofloat) { - wins[fi++] = c->title; - wins[fi++] = c->win; - } - else { - wins[mi++] = c->title; - wins[mi++] = c->win; - } - } - XRestackWindows(dpy, wins, n); - drawall(); - XSync(dpy, False); - while(XCheckMaskEvent(dpy, EnterWindowMask, &ev)); -} - void settags(Client *c) { @@ -277,16 +125,6 @@ tag(Arg *arg) } void -togglemode(Arg *arg) -{ - arrange = arrange == dofloat ? dotile : dofloat; - if(sel) - arrange(NULL); - else - drawstatus(); -} - -void toggletag(Arg *arg) { unsigned int i; @@ -302,27 +140,3 @@ toggletag(Arg *arg) if(!isvisible(sel)) arrange(NULL); } - - -void -toggleview(Arg *arg) -{ - unsigned int i; - - seltag[arg->i] = !seltag[arg->i]; - for(i = 0; i < ntags && !seltag[i]; i++); - if(i == ntags) - seltag[arg->i] = True; /* cannot toggle last view */ - arrange(NULL); -} - -void -view(Arg *arg) -{ - unsigned int i; - - for(i = 0; i < ntags; i++) - seltag[i] = False; - seltag[arg->i] = True; - arrange(NULL); -} |