garbeam@73: /* garbeam@73: * (C)opyright MMVI Anselm R. Garbe garbeam@73: * See LICENSE file for license details. garbeam@73: */ garbeam@73: garbeam@73: #include "dwm.h" garbeam@73: garbeam@73: void (*arrange)(Arg *) = tiling; garbeam@73: garbeam@73: void garbeam@73: view(Arg *arg) garbeam@73: { garbeam@73: Client *c; garbeam@73: garbeam@73: tsel = arg->i; garbeam@73: arrange(NULL); garbeam@73: garbeam@74: for(c = clients; c; c = getnext(c->next)) garbeam@74: drawtitle(c); garbeam@74: drawstatus(); garbeam@73: } garbeam@73: garbeam@73: void garbeam@73: floating(Arg *arg) garbeam@73: { garbeam@73: Client *c; garbeam@73: garbeam@73: arrange = floating; garbeam@73: for(c = clients; c; c = c->next) { garbeam@73: if(c->tags[tsel]) garbeam@73: resize(c, True); garbeam@73: else garbeam@74: ban(c); garbeam@73: } garbeam@73: if(sel && !sel->tags[tsel]) { garbeam@74: if((sel = getnext(clients))) { garbeam@74: higher(sel); garbeam@73: focus(sel); garbeam@73: } garbeam@73: } garbeam@74: drawstatus(); garbeam@73: } garbeam@73: garbeam@73: void garbeam@73: tiling(Arg *arg) garbeam@73: { garbeam@73: Client *c; garbeam@73: int n, i, w, h; garbeam@73: garbeam@73: w = sw - mw; garbeam@73: arrange = tiling; garbeam@73: for(n = 0, c = clients; c; c = c->next) garbeam@73: if(c->tags[tsel] && !c->floating) garbeam@73: n++; garbeam@73: garbeam@73: if(n > 1) garbeam@73: h = (sh - bh) / (n - 1); garbeam@73: else garbeam@73: h = sh - bh; garbeam@73: garbeam@73: for(i = 0, c = clients; c; c = c->next) { garbeam@73: if(c->tags[tsel]) { garbeam@73: if(c->floating) { garbeam@74: higher(c); garbeam@73: resize(c, True); garbeam@73: continue; garbeam@73: } garbeam@73: if(n == 1) { garbeam@73: c->x = sx; garbeam@73: c->y = sy + bh; garbeam@73: c->w = sw - 2 * c->border; garbeam@73: c->h = sh - 2 * c->border - bh; garbeam@73: } garbeam@73: else if(i == 0) { garbeam@73: c->x = sx; garbeam@73: c->y = sy + bh; garbeam@73: c->w = mw - 2 * c->border; garbeam@73: c->h = sh - 2 * c->border - bh; garbeam@73: } garbeam@73: else { garbeam@73: c->x = sx + mw; garbeam@73: c->y = sy + (i - 1) * h + bh; garbeam@73: c->w = w - 2 * c->border; garbeam@73: c->h = h - 2 * c->border; garbeam@73: } garbeam@73: resize(c, False); garbeam@73: i++; garbeam@73: } garbeam@73: else garbeam@74: ban(c); garbeam@73: } garbeam@73: if(!sel || (sel && !sel->tags[tsel])) { garbeam@74: if((sel = getnext(clients))) { garbeam@74: higher(sel); garbeam@73: focus(sel); garbeam@73: } garbeam@73: } garbeam@74: drawstatus(); garbeam@73: } garbeam@73: