diff options
author | Anselm R. Garbe <arg@suckless.org> | 2007-02-14 14:01:12 +0100 |
---|---|---|
committer | Anselm R. Garbe <arg@suckless.org> | 2007-02-14 14:01:12 +0100 |
commit | 3ce8c9f33844a995e79329978db9d2cd3981e032 (patch) | |
tree | 58c918da4f17a1d81440cc97f6e031fd3938a58a | |
parent | 0d095ae2ff0e8d703e4a8c9a20cd061c4bdcc6e2 (diff) | |
download | dwm-3ce8c9f33844a995e79329978db9d2cd3981e032.tar.gz |
added ban() which takes care than a banned window is not banned again... (this reduces the overall ConfigureNotify's to clients)
-rw-r--r-- | client.c | 10 | ||||
-rw-r--r-- | config.mk | 2 | ||||
-rw-r--r-- | dwm.h | 3 | ||||
-rw-r--r-- | event.c | 2 | ||||
-rw-r--r-- | view.c | 9 |
5 files changed, 19 insertions, 7 deletions
diff --git a/client.c b/client.c index 486efe9..3505e76 100644 --- a/client.c +++ b/client.c @@ -68,6 +68,14 @@ xerrordummy(Display *dsply, XErrorEvent *ee) { /* extern */ void +ban(Client *c) { + if(!c || c->isbanned) + return; + c->isbanned = True; + XMoveWindow(dpy, c->win, c->x + 2 * sw, c->y); +} + +void configure(Client *c) { XConfigureEvent ce; @@ -190,7 +198,7 @@ manage(Window w, XWindowAttributes *wa) { c->next = clients; c->snext = stack; stack = clients = c; - XMoveWindow(dpy, c->win, c->x + 2 * sw, c->y); + ban(c); XMapWindow(dpy, c->win); setclientstate(c, NormalState); if(isvisible(c)) diff --git a/config.mk b/config.mk index 510fd82..d3a6ffd 100644 --- a/config.mk +++ b/config.mk @@ -1,5 +1,5 @@ # dwm version -VERSION = 3.5 +VERSION = 3.6 # Customize below to fit your system diff --git a/dwm.h b/dwm.h index 674ab1e..2969ecb 100644 --- a/dwm.h +++ b/dwm.h @@ -73,7 +73,7 @@ struct Client { int minax, minay, maxax, maxay; long flags; unsigned int border; - Bool isfixed, isfloat, ismax; + Bool isbanned, isfixed, isfloat, ismax; Bool *tags; Client *next; Client *prev; @@ -99,6 +99,7 @@ extern Display *dpy; extern Window root, barwin; /* client.c */ +extern void ban(Client *c); /* ban c */ extern void configure(Client *c); /* send synthetic configure event */ extern void focus(Client *c); /* focus c, c may be NULL */ extern Client *getclient(Window w); /* return client of w */ diff --git a/event.c b/event.c index bf69d9e..8c8b997 100644 --- a/event.c +++ b/event.c @@ -189,7 +189,7 @@ configurerequest(XEvent *e) { configure(c); resize(c, False); if(!isvisible(c)) - XMoveWindow(dpy, c->win, c->x + 2 * sw, c->y); + ban(c); } else configure(c); diff --git a/view.c b/view.c index 8164446..5c06027 100644 --- a/view.c +++ b/view.c @@ -55,10 +55,12 @@ dofloat(void) { Client *c; for(c = clients; c; c = c->next) { - if(isvisible(c)) + if(isvisible(c)) { + c->isbanned = False; resize(c, True); + } else - XMoveWindow(dpy, c->win, c->x + 2 * sw, c->y); + ban(c); } if(!sel || !isvisible(sel)) { for(c = stack; c && !isvisible(c); c = c->snext); @@ -82,6 +84,7 @@ dotile(void) { for(i = 0, c = clients; c; c = c->next) if(isvisible(c)) { + c->isbanned = False; if(c->isfloat) { resize(c, True); continue; @@ -108,7 +111,7 @@ dotile(void) { i++; } else - XMoveWindow(dpy, c->win, c->x + 2 * sw, c->y); + ban(c); if(!sel || !isvisible(sel)) { for(c = stack; c && !isvisible(c); c = c->snext); focus(c); |