Introduction
Introduction Statistics Contact Development Disclaimer Help
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();
}
You are viewing proxied material from mx1.adamsgaard.dk. The copyright of proxied material belongs to its original authors. Any comments or complaints in relation to proxied material should be directed to the original authors of the content concerned. Please see the disclaimer for more details.