tapplied anydot's 3 minor patches, thank you anydot - dwm - [fork] customized b… | |
git clone git://src.adamsgaard.dk/dwm | |
Log | |
Files | |
Refs | |
README | |
LICENSE | |
--- | |
commit 199a6016114875656102d11e79a80939bfaff3b3 | |
parent 492c6f10fcf9acf74d84eb3fe005ecf2dd42611a | |
Author: Anselm R. Garbe <[email protected]> | |
Date: Tue, 29 May 2007 11:35:20 +0200 | |
applied anydot's 3 minor patches, thank you anydot | |
Diffstat: | |
M client.c | 17 ++++------------- | |
M dwm.h | 3 +-- | |
M event.c | 4 ++-- | |
M layout.c | 41 ++++++++++++++++++-----------… | |
4 files changed, 31 insertions(+), 34 deletions(-) | |
--- | |
diff --git a/client.c b/client.c | |
t@@ -129,8 +129,8 @@ detach(Client *c) { | |
void | |
focus(Client *c) { | |
- if(c && !isvisible(c)) | |
- return; | |
+ if( !c && selscreen || c && !isvisible(c)) | |
+ for(c = stack; c && !isvisible(c); c = c->snext); | |
if(sel && sel != c) { | |
grabbuttons(sel, False); | |
XSetWindowBorder(dpy, sel->win, dc.norm[ColBorder]); | |
t@@ -153,14 +153,6 @@ focus(Client *c) { | |
} | |
void | |
-focustopvisible(void) { | |
- Client *c; | |
- | |
- for(c = stack; c && !isvisible(c); c = c->snext); | |
- focus(c); | |
-} | |
- | |
-void | |
killclient(const char *arg) { | |
XEvent ev; | |
t@@ -230,8 +222,7 @@ manage(Window w, XWindowAttributes *wa) { | |
XMoveWindow(dpy, w, c->x + 2 * sw, c->y); | |
XMapWindow(dpy, w); | |
setclientstate(c, NormalState); | |
- if(isvisible(c)) | |
- focus(c); | |
+ focus(c); | |
lt->arrange(); | |
} | |
t@@ -401,7 +392,7 @@ unmanage(Client *c) { | |
detach(c); | |
detachstack(c); | |
if(sel == c) | |
- focustopvisible(); | |
+ focus(NULL); | |
XUngrabButton(dpy, AnyButton, AnyModifier, c->win); | |
setclientstate(c, WithdrawnState); | |
free(c->tags); | |
diff --git a/dwm.h b/dwm.h | |
t@@ -100,8 +100,7 @@ Window root, barwin; | |
void attach(Client *c); /* attaches c to global client … | |
void configure(Client *c); /* send synthetic configure event */ | |
void detach(Client *c); /* detaches c from global clien… | |
-void focus(Client *c); /* focus c, c may be NULL */ | |
-void focustopvisible(void); /* focus top visible window on stac… | |
+void focus(Client *c); /* focus c if visible && !NULL, … | |
void killclient(const char *arg); /* kill sel nicely */ | |
void manage(Window w, XWindowAttributes *wa); /* manage new client */ | |
void resize(Client *c, int x, int y, | |
diff --git a/event.c b/event.c | |
t@@ -242,11 +242,11 @@ enternotify(XEvent *e) { | |
if(ev->mode != NotifyNormal || ev->detail == NotifyInferior) | |
return; | |
- if((c = getclient(ev->window)) && isvisible(c)) | |
+ if(c = getclient(ev->window)) | |
focus(c); | |
else if(ev->window == root) { | |
selscreen = True; | |
- focustopvisible(); | |
+ focus(NULL); | |
} | |
} | |
diff --git a/layout.c b/layout.c | |
t@@ -14,6 +14,22 @@ static unsigned int masterw = MASTERWIDTH; | |
static unsigned int nmaster = NMASTER; | |
static void | |
+ban(Client *c) { | |
+ if (c->isbanned) | |
+ return; | |
+ XMoveWindow(dpy, c->win, c->x + 2 * sw, c->y); | |
+ c->isbanned = True; | |
+} | |
+ | |
+static void | |
+unban(Client *c) { | |
+ if (!c->isbanned) | |
+ return; | |
+ XMoveWindow(dpy, c->win, c->x, c->y); | |
+ c->isbanned = False; | |
+} | |
+ | |
+static void | |
tile(void) { | |
unsigned int i, n, nx, ny, nw, nh, mw, mh, tw, th; | |
Client *c; | |
t@@ -28,9 +44,7 @@ tile(void) { | |
for(i = 0, c = clients; c; c = c->next) | |
if(isvisible(c)) { | |
- if(c->isbanned) | |
- XMoveWindow(dpy, c->win, c->x, c->y); | |
- c->isbanned = False; | |
+ unban(c); | |
if(c->isfloating) | |
continue; | |
c->ismax = False; | |
t@@ -60,12 +74,9 @@ tile(void) { | |
resize(c, nx, ny, nw, nh, False); | |
i++; | |
} | |
- else { | |
- c->isbanned = True; | |
- XMoveWindow(dpy, c->win, c->x + 2 * sw, c->y); | |
- } | |
- if(!sel || !isvisible(sel)) | |
- focustopvisible(); | |
+ else | |
+ ban(c); | |
+ focus(NULL); | |
restack(); | |
} | |
t@@ -77,20 +88,16 @@ void | |
floating(void) { | |
Client *c; | |
- for(c = clients; c; c = c->next) { | |
+ 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)) | |
- focustopvisible(); | |
+ else | |
+ ban(c); | |
+ focus(NULL); | |
restack(); | |
} | |