diff options
Diffstat (limited to 'view.c')
-rw-r--r-- | view.c | 184 |
1 files changed, 0 insertions, 184 deletions
diff --git a/view.c b/view.c deleted file mode 100644 index 4781b4e..0000000 --- a/view.c +++ /dev/null @@ -1,184 +0,0 @@ -/* (C)opyright MMVI-MMVII Anselm R. Garbe <garbeam at gmail dot com> - * See LICENSE file for license details. - */ -#include "dwm.h" - -/* extern */ - -void (*arrange)(void) = DEFMODE; - -void -attach(Client *c) { - if(clients) - clients->prev = c; - c->next = clients; - clients = c; -} - -void -attachstack(Client *c) { - c->snext = stack; - stack = c; -} - -void -dofloat(void) { - Client *c; - - for(c = clients; c; c = c->next) { - if(isvisible(c)) { - if(c->isbanned) - XMoveWindow(dpy, c->win, c->x, c->y); - c->isbanned = False; - resize(c, c->x, c->y, c->w, c->h, True); - } - else { - c->isbanned = True; - XMoveWindow(dpy, c->win, c->x + 2 * sw, c->y); - } - } - if(!sel || !isvisible(sel)) { - for(c = stack; c && !isvisible(c); c = c->snext); - focus(c); - } - restack(); -} - -void -detach(Client *c) { - if(c->prev) - c->prev->next = c->next; - if(c->next) - c->next->prev = c->prev; - if(c == clients) - clients = c->next; - c->next = c->prev = NULL; -} - -void -detachstack(Client *c) { - Client **tc; - for(tc=&stack; *tc && *tc != c; tc=&(*tc)->snext); - *tc = c->snext; -} - -void -focusnext(Arg *arg) { - Client *c; - - if(!sel) - return; - for(c = sel->next; c && !isvisible(c); c = c->next); - if(!c) - for(c = clients; c && !isvisible(c); c = c->next); - if(c) { - focus(c); - restack(); - } -} - -void -focusprev(Arg *arg) { - Client *c; - - if(!sel) - return; - for(c = sel->prev; c && !isvisible(c); c = c->prev); - if(!c) { - for(c = clients; c && c->next; c = c->next); - for(; c && !isvisible(c); c = c->prev); - } - if(c) { - focus(c); - restack(); - } -} - -Client * -getclient(Window w) { - Client *c; - - for(c = clients; c; c = c->next) - if(c->win == w) - return c; - return NULL; -} - -Bool -isvisible(Client *c) { - unsigned int i; - - for(i = 0; i < ntags; i++) - if(c->tags[i] && seltag[i]) - return True; - return False; -} - -Client * -nextmanaged(Client *c) { - for(; c && (c->isfloat || !isvisible(c)); c = c->next); - return c; -} - -void -restack(void) { - Client *c; - XEvent ev; - - drawstatus(); - if(!sel) - return; - if(sel->isfloat || arrange == dofloat) - XRaiseWindow(dpy, sel->win); - if(arrange != dofloat) { - if(!sel->isfloat) - XLowerWindow(dpy, sel->win); - for(c = nextmanaged(clients); c; c = nextmanaged(c->next)) { - if(c == sel) - continue; - XLowerWindow(dpy, c->win); - } - } - XSync(dpy, False); - while(XCheckMaskEvent(dpy, EnterWindowMask, &ev)); -} - -void -togglefloat(Arg *arg) { - if(!sel || arrange == dofloat) - return; - sel->isfloat = !sel->isfloat; - arrange(); -} - -void -togglemode(Arg *arg) { - arrange = (arrange == dofloat) ? dotile : dofloat; - if(sel) - arrange(); - else - drawstatus(); -} - -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(); -} - -void -view(Arg *arg) { - unsigned int i; - - for(i = 0; i < ntags; i++) - seltag[i] = (arg->i == -1) ? True : False; - if(arg->i >= 0 && arg->i < ntags) - seltag[arg->i] = True; - arrange(); -} - |