tsome polishing in tileh/tilev - dwm - [fork] customized build of dwm, the dyna… | |
git clone git://src.adamsgaard.dk/dwm | |
Log | |
Files | |
Refs | |
README | |
LICENSE | |
--- | |
commit 831428b00cf0bb6c7830c2178c8d13213f29b2db | |
parent 69439715c09ac36fe94f3cb7b1ed87149fc5ecff | |
Author: Anselm R Garbe <[email protected]> | |
Date: Thu, 13 Mar 2008 13:59:40 +0000 | |
some polishing in tileh/tilev | |
Diffstat: | |
M dwm.c | 102 +++++++++++++++--------------… | |
1 file changed, 50 insertions(+), 52 deletions(-) | |
--- | |
diff --git a/dwm.c b/dwm.c | |
t@@ -117,6 +117,7 @@ void cleanup(void); | |
void configure(Client *c); | |
void configurenotify(XEvent *e); | |
void configurerequest(XEvent *e); | |
+unsigned int counttiled(void); | |
void destroynotify(XEvent *e); | |
void detach(Client *c); | |
void detachstack(Client *c); | |
t@@ -170,7 +171,8 @@ unsigned int textnw(const char *text, unsigned int len); | |
unsigned int textw(const char *text); | |
void tileh(void); | |
void tilehstack(unsigned int n); | |
-unsigned int tilemaster(void); | |
+Client *tilemaster(unsigned int n); | |
+void tileresize(Client *c, int x, int y, int w, int h); | |
void tilev(void); | |
void tilevstack(unsigned int n); | |
void togglefloating(const char *arg); | |
t@@ -458,6 +460,15 @@ configurerequest(XEvent *e) { | |
XSync(dpy, False); | |
} | |
+unsigned int | |
+counttiled(void) { | |
+ unsigned int n; | |
+ Client *c; | |
+ | |
+ for(n = 0, c = nexttiled(clients); c; c = nexttiled(c->next), n++); | |
+ return n; | |
+} | |
+ | |
void | |
destroynotify(XEvent *e) { | |
Client *c; | |
t@@ -1579,89 +1590,76 @@ textw(const char *text) { | |
} | |
void | |
-tileresize(Client *c, int x, int y, int w, int h) { | |
- resize(c, x, y, w, h, RESIZEHINTS); | |
- if((RESIZEHINTS) && ((c->h < bh) || (c->h > h) || (c->w < bh) || (c->w… | |
- /* client doesn't accept size constraints */ | |
- resize(c, x, y, w, h, False); | |
-} | |
- | |
-void | |
tileh(void) { | |
- tilehstack(tilemaster()); | |
-} | |
- | |
-void | |
-tilehstack(unsigned int n) { | |
- int i, x, w; | |
+ int x, w; | |
+ unsigned int i, n = counttiled(); | |
Client *c; | |
if(n == 0) | |
return; | |
+ c = tilemaster(n); | |
+ if(--n == 0) | |
+ return; | |
x = tx; | |
w = tw / n; | |
if(w < bh) | |
w = tw; | |
- for(i = 0, c = nexttiled(clients); c; c = nexttiled(c->next), i++) | |
- if(i > 0) { | |
- if(i > 1 && i == n) /* remainder */ | |
- tileresize(c, x, ty, (tx + tw) - x - 2 * c->bo… | |
- th - 2 * c->border); | |
- else | |
- tileresize(c, x, ty, w - 2 * c->border, | |
- th - 2 * c->border); | |
- if(w != tw) | |
- x = c->x + c->w + 2 * c->border; | |
- } | |
+ for(i = 0, c = nexttiled(c->next); c; c = nexttiled(c->next), i++) { | |
+ if(i + 1 == n) /* remainder */ | |
+ tileresize(c, x, ty, (tx + tw) - x - 2 * c->border, th… | |
+ else | |
+ tileresize(c, x, ty, w - 2 * c->border, th - 2 * c->bo… | |
+ if(w != tw) | |
+ x = c->x + c->w + 2 * c->border; | |
+ } | |
} | |
-unsigned int | |
-tilemaster(void) { | |
- unsigned int n; | |
- Client *c, *mc; | |
+Client * | |
+tilemaster(unsigned int n) { | |
+ Client *c = nexttiled(clients); | |
- for(n = 0, mc = c = nexttiled(clients); c; c = nexttiled(c->next)) | |
- n++; | |
- if(n == 0) | |
- return 0; | |
if(n == 1) | |
- tileresize(mc, mox, moy, mow - 2 * mc->border, moh - 2 * mc->b… | |
+ tileresize(c, mox, moy, mow - 2 * c->border, moh - 2 * c->bord… | |
else | |
- tileresize(mc, mx, my, mw - 2 * mc->border, mh - 2 * mc->borde… | |
- return n - 1; | |
+ tileresize(c, mx, my, mw - 2 * c->border, mh - 2 * c->border); | |
+ return c; | |
} | |
void | |
-tilev(void) { | |
- tilevstack(tilemaster()); | |
+tileresize(Client *c, int x, int y, int w, int h) { | |
+ resize(c, x, y, w, h, RESIZEHINTS); | |
+ if((RESIZEHINTS) && ((c->h < bh) || (c->h > h) || (c->w < bh) || (c->w… | |
+ /* client doesn't accept size constraints */ | |
+ resize(c, x, y, w, h, False); | |
} | |
void | |
-tilevstack(unsigned int n) { | |
- int i, y, h; | |
+tilev(void) { | |
+ int y, h; | |
+ unsigned int i, n = counttiled(); | |
Client *c; | |
if(n == 0) | |
return; | |
+ c = tilemaster(n); | |
+ if(--n == 0) | |
+ return; | |
y = ty; | |
h = th / n; | |
if(h < bh) | |
h = th; | |
- for(i = 0, c = nexttiled(clients); c; c = nexttiled(c->next), i++) | |
- if(i > 0) { | |
- if(i > 1 && i == n) /* remainder */ | |
- tileresize(c, tx, y, tw - 2 * c->border, | |
- (ty + th) - y - 2 * c->border); | |
- else | |
- tileresize(c, tx, y, tw - 2 * c->border, | |
- h - 2 * c->border); | |
- if(h != th) | |
- y = c->y + c->h + 2 * c->border; | |
- } | |
+ for(i = 0, c = nexttiled(c->next); c; c = nexttiled(c->next), i++) { | |
+ if(i + 1 == n) /* remainder */ | |
+ tileresize(c, tx, y, tw - 2 * c->border, (ty + th) - y… | |
+ else | |
+ tileresize(c, tx, y, tw - 2 * c->border, h - 2 * c->bo… | |
+ if(h != th) | |
+ y = c->y + c->h + 2 * c->border; | |
+ } | |
} | |
void |