URI: 
       added ban() which takes care than a banned window is not banned again... (this reduces the overall ConfigureNotify's to clients) - dwm - dynamic window manager
  HTML git clone https://git.parazyd.org/dwm
   DIR Log
   DIR Files
   DIR Refs
   DIR README
   DIR LICENSE
       ---
   DIR commit 3ce8c9f33844a995e79329978db9d2cd3981e032
   DIR parent 0d095ae2ff0e8d703e4a8c9a20cd061c4bdcc6e2
  HTML Author: Anselm R. Garbe <arg@suckless.org>
       Date:   Wed, 14 Feb 2007 14:01:12 +0100
       
       added ban() which takes care than a banned window is not banned again... (this reduces the overall ConfigureNotify's to clients)
       Diffstat:
         M client.c                            |      10 +++++++++-
         M config.mk                           |       2 +-
         M dwm.h                               |       3 ++-
         M event.c                             |       2 +-
         M view.c                              |       9 ++++++---
       
       5 files changed, 19 insertions(+), 7 deletions(-)
       ---
   DIR diff --git 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))
   DIR diff --git a/config.mk b/config.mk
       @@ -1,5 +1,5 @@
        # dwm version
       -VERSION = 3.5
       +VERSION = 3.6
        
        # Customize below to fit your system
        
   DIR diff --git 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 */
   DIR diff --git 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);
   DIR diff --git 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);