From 238dd5d2b15b8bdc0f05d5be7f86a1ca03d2920b Mon Sep 17 00:00:00 2001 From: "Anselm R. Garbe" Date: Mon, 19 Feb 2007 15:05:29 +0100 Subject: [PATCH] renamed view.c into screen.c --- Makefile | 2 +- client.c | 73 +++++++++++++++++++++++++++++++++++++--------- dwm.h | 10 +++---- view.c => screen.c | 51 ++------------------------------ 4 files changed, 67 insertions(+), 69 deletions(-) rename view.c => screen.c (85%) diff --git a/Makefile b/Makefile index 31ae1c1..a9f129d 100644 --- a/Makefile +++ b/Makefile @@ -3,7 +3,7 @@ include config.mk -SRC = client.c draw.c event.c main.c manage.c util.c +SRC = client.c draw.c event.c main.c screen.c util.c OBJ = ${SRC:.c=.o} all: options dwm diff --git a/client.c b/client.c index 45f2d19..eaf4a10 100644 --- a/client.c +++ b/client.c @@ -9,6 +9,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 @@ setclientstate(Client *c, long state) { 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; @@ -83,12 +114,6 @@ attach(Client *c) { clients = c; } -void -attachstack(Client *c) { - c->snext = stack; - stack = c; -} - void configure(Client *c) { XConfigureEvent ce; @@ -118,13 +143,6 @@ detach(Client *c) { 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)) @@ -256,6 +274,12 @@ manage(Window w, XWindowAttributes *wa) { arrange(); } +Client * +nexttiled(Client *c) { + for(; c && (c->isfloat || !isvisible(c)); c = c->next); + return c; +} + void resize(Client *c, int x, int y, int w, int h, Bool sizehints) { float actual, dx, dy, max, min; @@ -416,3 +440,26 @@ unmanage(Client *c) { 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(); +} diff --git a/dwm.h b/dwm.h index cca9984..57fab91 100644 --- a/dwm.h +++ b/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/do 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 */ + diff --git a/view.c b/screen.c similarity index 85% rename from view.c rename to screen.c index 34aae58..041cac7 100644 --- a/view.c +++ b/screen.c @@ -32,30 +32,6 @@ RULES 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 @@ restack(void) { 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 @@ view(Arg *arg) { 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(); -}