| 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(); | |
| } | |