renamed view.c into screen.c
Anselm R. Garbe arg@suckless.org
Mon, 19 Feb 2007 15:05:29 +0100
M
client.c
→
client.c
@@ -10,6 +10,19 @@
/* static */ static void +attachstack(Client *c) { + c->snext = stack; + stack = c; +} + +static void +detachstack(Client *c) { + Client **tc; + for(tc=&stack; *tc && *tc != c; tc=&(*tc)->snext); + *tc = c->snext; +} + +static void grabbuttons(Client *c, Bool focused) { XUngrabButton(dpy, AnyButton, AnyModifier, c->win);@@ -68,6 +81,24 @@ XChangeProperty(dpy, c->win, wmatom[WMState], wmatom[WMState], 32,
PropModeReplace, (unsigned char *)data, 2); } +static void +togglemax(Client *c) { + XEvent ev; + + if(c->isfixed) + return; + if((c->ismax = !c->ismax)) { + c->rx = c->x; + c->ry = c->y; + c->rw = c->w; + c->rh = c->h; + resize(c, wax, way, waw - 2 * BORDERPX, wah - 2 * BORDERPX, True); + } + else + resize(c, c->rx, c->ry, c->rw, c->rh, True); + while(XCheckMaskEvent(dpy, EnterWindowMask, &ev)); +} + static int xerrordummy(Display *dsply, XErrorEvent *ee) { return 0;@@ -81,12 +112,6 @@ if(clients)
clients->prev = c; c->next = clients; clients = c; -} - -void -attachstack(Client *c) { - c->snext = stack; - stack = c; } void@@ -119,13 +144,6 @@ c->next = c->prev = NULL;
} void -detachstack(Client *c) { - Client **tc; - for(tc=&stack; *tc && *tc != c; tc=&(*tc)->snext); - *tc = c->snext; -} - -void focus(Client *c) { if(c && !isvisible(c)) return;@@ -254,6 +272,12 @@ setclientstate(c, NormalState);
if(isvisible(c)) focus(c); arrange(); +} + +Client * +nexttiled(Client *c) { + for(; c && (c->isfloat || !isvisible(c)); c = c->next); + return c; } void@@ -416,3 +440,26 @@ XSetErrorHandler(xerror);
XUngrabServer(dpy); arrange(); } + +void +zoom(Arg *arg) { + unsigned int n; + Client *c; + + if(!sel) + return; + if(sel->isfloat || (arrange == dofloat)) { + togglemax(sel); + return; + } + for(n = 0, c = nexttiled(clients); c; c = nexttiled(c->next)) + n++; + + if((c = sel) == nexttiled(clients)) + if(!(c = nexttiled(c->next))) + return; + detach(c); + attach(c); + focus(c); + arrange(); +}
M
dwm.h
→
dwm.h
@@ -99,22 +99,20 @@ extern Display *dpy;
extern Window root, barwin; /* client.c */ -extern void attach(Client *c); /* attaches c to global client list */ -extern void attachstack(Client *c); /* attaches client to stack */ extern void configure(Client *c); /* send synthetic configure event */ -extern void detach(Client *c); /* detaches c from global client list */ -extern void detachstack(Client *c); /* detaches client from stack */ extern void focus(Client *c); /* focus c, c may be NULL */ extern void focusnext(Arg *arg); /* focuses next visible client, arg is ignored */ extern void focusprev(Arg *arg); /* focuses previous visible client, arg is ignored */ extern Client *getclient(Window w); /* return client of w */ extern void killclient(Arg *arg); /* kill c nicely */ extern void manage(Window w, XWindowAttributes *wa); /* manage new client */ +Client *nexttiled(Client *c); /* returns tiled successor of c */ extern void resize(Client *c, int x, int y, int w, int h, Bool sizehints); /* resize c*/ extern void updatesizehints(Client *c); /* update the size hint variables of c */ extern void updatetitle(Client *c); /* update the name of c */ extern void unmanage(Client *c); /* destroy c */ +extern void zoom(Arg *arg); /* zooms the focused client to master area, arg is ignored */ /* draw.c */ extern void drawstatus(void); /* draw the bar */@@ -131,7 +129,7 @@ extern void quit(Arg *arg); /* quit dwm nicely */
extern void sendevent(Window w, Atom a, long value); /* send synthetic event to w */ extern int xerror(Display *dsply, XErrorEvent *ee); /* dwm's X error handler */ -/* manage.c */ +/* screen.c */ extern void compileregexps(void); /* initialize regexps of rules defined in config.h */ extern void dofloat(void); /* arranges all windows floating */ extern void dotile(void); /* arranges all windows tiled */@@ -146,9 +144,9 @@ extern void togglemode(Arg *arg); /* toggles global arrange function (dotile/dofloat) */
extern void toggletag(Arg *arg); /* toggles c tags with arg's index */ extern void toggleview(Arg *arg); /* toggles the tag with arg's index (in)visible */ extern void view(Arg *arg); /* views the tag with arg's index */ -extern void zoom(Arg *arg); /* zooms the focused client to master area, arg is ignored */ /* util.c */ extern void *emallocz(unsigned int size); /* allocates zero-initialized memory, exits on error */ extern void eprint(const char *errstr, ...); /* prints errstr and exits with 1 */ extern void spawn(Arg *arg); /* forks a new subprocess with to arg's cmd */ +
M
view.c
→
screen.c
@@ -32,30 +32,6 @@
static Regexps *regexps = NULL; static unsigned int len = 0; -static Client * -nextmanaged(Client *c) { - for(; c && (c->isfloat || !isvisible(c)); c = c->next); - return c; -} - -static void -togglemax(Client *c) { - XEvent ev; - - if(c->isfixed) - return; - if((c->ismax = !c->ismax)) { - c->rx = c->x; - c->ry = c->y; - c->rw = c->w; - c->rh = c->h; - resize(c, wax, way, waw - 2 * BORDERPX, wah - 2 * BORDERPX, True); - } - else - resize(c, c->rx, c->ry, c->rw, c->rh, True); - while(XCheckMaskEvent(dpy, EnterWindowMask, &ev)); -} - /* extern */ void@@ -112,7 +88,7 @@ dotile(void) {
unsigned int i, n, nx, ny, nw, nh, mw, mh, tw, th; Client *c; - for(n = 0, c = nextmanaged(clients); c; c = nextmanaged(c->next)) + for(n = 0, c = nexttiled(clients); c; c = nexttiled(c->next)) n++; /* window geoms */ mh = (n > nmaster) ? wah / nmaster : wah / (n > 0 ? n : 1);@@ -209,7 +185,7 @@ XRaiseWindow(dpy, sel->win);
if(arrange != dofloat) { if(!sel->isfloat) XLowerWindow(dpy, sel->win); - for(c = nextmanaged(clients); c; c = nextmanaged(c->next)) { + for(c = nexttiled(clients); c; c = nexttiled(c->next)) { if(c == sel) continue; XLowerWindow(dpy, c->win);@@ -319,26 +295,3 @@ if(arg->i >= 0 && arg->i < ntags)
seltag[arg->i] = True; arrange(); } - -void -zoom(Arg *arg) { - unsigned int n; - Client *c; - - if(!sel) - return; - if(sel->isfloat || (arrange == dofloat)) { - togglemax(sel); - return; - } - for(n = 0, c = nextmanaged(clients); c; c = nextmanaged(c->next)) - n++; - - if((c = sel) == nextmanaged(clients)) - if(!(c = nextmanaged(c->next))) - return; - detach(c); - attach(c); - focus(c); - arrange(); -}