tsmall change to achieve Jukka's last proposal - dwm - [fork] customized build … | |
git clone git://src.adamsgaard.dk/dwm | |
Log | |
Files | |
Refs | |
README | |
LICENSE | |
--- | |
commit 346bdea946887d83f857a8944a0189bca51a3e47 | |
parent 05c10c5776738fdfe73c1e66e14c869e2e5e338d | |
Author: arg@mmvi <unknown> | |
Date: Fri, 22 Sep 2006 13:53:28 +0200 | |
small change to achieve Jukka's last proposal | |
Diffstat: | |
M dwm.h | 3 ++- | |
M view.c | 45 ++++++++++++++++++++++-------… | |
2 files changed, 34 insertions(+), 14 deletions(-) | |
--- | |
diff --git a/dwm.h b/dwm.h | |
t@@ -77,12 +77,13 @@ struct Client { | |
char name[256]; | |
int proto; | |
int x, y, w, h; | |
+ int rx, ry, rw, rh; /* revert geometry */ | |
int tx, ty, tw, th; /* title window geometry */ | |
int basew, baseh, incw, inch, maxw, maxh, minw, minh; | |
int grav; | |
long flags; | |
unsigned int border, weight; | |
- Bool isfloat; | |
+ Bool isfloat, ismax; | |
Bool *tags; | |
Client *next; | |
Client *prev; | |
diff --git a/view.c b/view.c | |
t@@ -18,6 +18,12 @@ minclient() { | |
return min; | |
} | |
+static Client * | |
+nexttiled(Client *c) { | |
+ for(c = getnext(c); c && c->isfloat; c = getnext(c->next)); | |
+ return c; | |
+} | |
+ | |
static void | |
reorder() { | |
Client *c, *newclients, *tail; | |
t@@ -36,10 +42,23 @@ reorder() { | |
clients = newclients; | |
} | |
-static Client * | |
-nexttiled(Client *c) { | |
- for(c = getnext(c); c && c->isfloat; c = getnext(c->next)); | |
- return c; | |
+static void | |
+togglemax(Client *c) | |
+{ | |
+ if((c->ismax = !c->ismax)) { | |
+ c->rx = c->x; c->x = sx; | |
+ c->ry = c->y; c->y = bh; | |
+ c->rw = c->w; c->w = sw; | |
+ c->rh = c->h; c->h = sh; | |
+ } | |
+ else { | |
+ c->x = c->rx; | |
+ c->y = c->ry; | |
+ c->w = c->w; | |
+ c->h = c->h; | |
+ } | |
+ resize(c, True, TopLeft); | |
+ while(XCheckMaskEvent(dpy, EnterWindowMask, &ev)); | |
} | |
/* extern */ | |
t@@ -82,8 +101,14 @@ dotile(Arg *arg) { | |
w = sw - mw; | |
for(n = 0, c = clients; c; c = c->next) | |
- if(isvisible(c) && !c->isfloat) | |
- n++; | |
+ if(isvisible(c)) { | |
+ if(c->isfloat) { | |
+ if(c->ismax) | |
+ togglemax(c); | |
+ } | |
+ else | |
+ n++; | |
+ } | |
if(n > 1) | |
h = (sh - bh) / (n - 1); | |
t@@ -269,7 +294,6 @@ viewall(Arg *arg) { | |
void | |
zoom(Arg *arg) { | |
- int tmp; | |
unsigned int n; | |
Client *c; | |
XEvent ev; | |
t@@ -278,12 +302,7 @@ zoom(Arg *arg) { | |
return; | |
if(sel->isfloat || (arrange == dofloat)) { | |
- sel->x = sx; | |
- sel->y = bh; | |
- sel->w = sw; | |
- sel->h = sh - bh; | |
- resize(sel, True, TopLeft); | |
- while(XCheckMaskEvent(dpy, EnterWindowMask, &ev)); | |
+ togglemax(sel); | |
return; | |
} | |