simplified configurerequest - dwm - dynamic window manager
 (HTM) git clone https://git.parazyd.org/dwm
 (DIR) Log
 (DIR) Files
 (DIR) Refs
 (DIR) README
 (DIR) LICENSE
       ---
 (DIR) commit 71857b87ee4e5ce63594d062143e6ea78f842b0d
 (DIR) parent 6ba400ee0fa55d1178cac5f38f4465a1ddf30490
 (HTM) Author: Anselm R. Garbe <arg@suckless.org>
       Date:   Tue, 13 Feb 2007 13:39:33 +0100
       
       simplified configurerequest
       Diffstat:
         M client.c                            |      25 +++++++++++++------------
         M event.c                             |      51 ++++++++++---------------------
       
       2 files changed, 29 insertions(+), 47 deletions(-)
       ---
 (DIR) diff --git a/client.c b/client.c
       @@ -69,19 +69,20 @@ xerrordummy(Display *dsply, XErrorEvent *ee) {
        
        void
        configure(Client *c) {
       -        XEvent synev;
       +        XConfigureEvent ce;
        
       -        synev.type = ConfigureNotify;
       -        synev.xconfigure.display = dpy;
       -        synev.xconfigure.event = c->win;
       -        synev.xconfigure.window = c->win;
       -        synev.xconfigure.x = c->x;
       -        synev.xconfigure.y = c->y;
       -        synev.xconfigure.width = c->w;
       -        synev.xconfigure.height = c->h;
       -        synev.xconfigure.border_width = c->border;
       -        synev.xconfigure.above = None;
       -        XSendEvent(dpy, c->win, True, NoEventMask, &synev);
       +        ce.type = ConfigureNotify;
       +        ce.display = dpy;
       +        ce.event = c->win;
       +        ce.window = c->win;
       +        ce.x = c->x;
       +        ce.y = c->y;
       +        ce.width = c->w;
       +        ce.height = c->h;
       +        ce.border_width = c->border;
       +        ce.above = None;
       +        ce.override_redirect = False;
       +        XSendEvent(dpy, c->win, False, StructureNotifyMask, (XEvent *)&ce);
        }
        
        void
 (DIR) diff --git a/event.c b/event.c
       @@ -166,52 +166,33 @@ buttonpress(XEvent *e) {
        
        static void
        configurerequest(XEvent *e) {
       -        unsigned long newmask;
                Client *c;
                XConfigureRequestEvent *ev = &e->xconfigurerequest;
                XWindowChanges wc;
        
       +        wc.x = ev->x;
       +        wc.y = ev->y;
       +        wc.width = ev->width;
       +        wc.height = ev->height;
       +        wc.border_width = ev->border_width;
       +        wc.sibling = ev->above;
       +        wc.stack_mode = ev->detail;
                if((c = getclient(ev->window))) {
                        c->ismax = False;
       -                if(ev->value_mask & CWX)
       -                        c->x = ev->x;
       -                if(ev->value_mask & CWY)
       -                        c->y = ev->y;
       -                if(ev->value_mask & CWWidth)
       -                        c->w = ev->width;
       -                if(ev->value_mask & CWHeight)
       -                        c->h = ev->height;
                        if(ev->value_mask & CWBorderWidth)
                                c->border = ev->border_width;
       -                wc.x = c->x;
       -                wc.y = c->y;
       -                wc.width = c->w;
       -                wc.height = c->h;
       -                newmask = ev->value_mask & (~(CWSibling | CWStackMode | CWBorderWidth));
       -                if(newmask)
       -                        XConfigureWindow(dpy, c->win, newmask, &wc);
       -                else
       +                if((!c->isfloat && (arrange != dofloat))
       +                        || ((ev->value_mask & (CWX|CWY)) && !(ev->value_mask & (CWWidth|CWHeight))))
       +                {
                                configure(c);
       -                XSync(dpy, False);
       -                if(c->isfloat) {
       -                        resize(c, False);
       -                        if(!isvisible(c))
       -                                XMoveWindow(dpy, c->win, c->x + 2 * sw, c->y);
       +                        XSync(dpy, False);
       +                        return;
                        }
       -                else
       -                        arrange();
       -        }
       -        else {
       -                wc.x = ev->x;
       -                wc.y = ev->y;
       -                wc.width = ev->width;
       -                wc.height = ev->height;
       -                wc.border_width = ev->border_width;
       -                wc.sibling = ev->above;
       -                wc.stack_mode = ev->detail;
       -                XConfigureWindow(dpy, ev->window, ev->value_mask, &wc);
       -                XSync(dpy, False);
                }
       +        XConfigureWindow(dpy, ev->window, ev->value_mask, &wc);
       +        if(c && !isvisible(c))
       +                XMoveWindow(dpy, c->win, c->x + 2 * sw, c->y);
       +        XSync(dpy, False);
        }
        
        static void