URI: 
       sander check this - dwm - dynamic window manager
  HTML git clone https://git.parazyd.org/dwm
   DIR Log
   DIR Files
   DIR Refs
   DIR README
   DIR LICENSE
       ---
   DIR commit 9eb226ff78a0d8fc733c31d98170d33824231370
   DIR parent e34c4eaf61d4e9972132b53b05cfc43c550d4d15
  HTML Author: arg@mmvi <unknown>
       Date:   Fri, 22 Sep 2006 09:43:21 +0200
       
       sander check this
       Diffstat:
         M event.c                             |      56 ++++++++++++++++++++-----------
       
       1 file changed, 37 insertions(+), 19 deletions(-)
       ---
   DIR diff --git a/event.c b/event.c
       @@ -21,6 +21,23 @@ KEYS
        #define CLEANMASK(mask) (mask & ~(numlockmask | LockMask))
        
        static void
       +synconfig(Client *c, int x, int y, int w, int h, unsigned int border) {
       +        XEvent synev;
       +
       +        synev.type = ConfigureNotify;
       +        synev.xconfigure.display = dpy;
       +        synev.xconfigure.event = c->win;
       +        synev.xconfigure.window = c->win;
       +        synev.xconfigure.x = x;
       +        synev.xconfigure.y = y;
       +        synev.xconfigure.width = w;
       +        synev.xconfigure.height = h;
       +        synev.xconfigure.border_width = border;
       +        synev.xconfigure.above = None;
       +        XSendEvent(dpy, c->win, True, NoEventMask, &synev);
       +}
       +
       +static void
        movemouse(Client *c) {
                int x1, y1, ocx, ocy, di;
                unsigned int dui;
       @@ -34,10 +51,14 @@ movemouse(Client *c) {
                        return;
                XQueryPointer(dpy, root, &dummy, &dummy, &x1, &y1, &di, &di, &dui);
                for(;;) {
       -                XMaskEvent(dpy, MOUSEMASK | ExposureMask, &ev);
       +                XMaskEvent(dpy, MOUSEMASK | ExposureMask | StructureNotifyMask, &ev);
                        switch (ev.type) {
                        default:
                                break;
       +                case ConfigureRequest:
       +                        synconfig(c, c->x, c->y, c->w, c->h, ev.xconfigure.border_width);
       +                        XSync(dpy, False);
       +                        break;
                        case Expose:
                                handler[Expose](&ev);
                                break;
       @@ -50,6 +71,11 @@ movemouse(Client *c) {
                        case ButtonRelease:
                                XUngrabPointer(dpy, CurrentTime);
                                return;
       +                case DestroyNotify:
       +                case UnmapNotify:
       +                        XUngrabPointer(dpy, CurrentTime);
       +                        handler[ev.type](&ev);
       +                        return;
                        }
                }
        }
       @@ -68,10 +94,14 @@ resizemouse(Client *c) {
                        return;
                XWarpPointer(dpy, None, c->win, 0, 0, 0, 0, c->w, c->h);
                for(;;) {
       -                XMaskEvent(dpy, MOUSEMASK | ExposureMask, &ev);
       +                XMaskEvent(dpy, MOUSEMASK | ExposureMask | StructureNotifyMask, &ev);
                        switch(ev.type) {
                        default:
                                break;
       +                case ConfigureRequest:
       +                        synconfig(c, c->x, c->y, c->w, c->h, ev.xconfigure.border_width);
       +                        XSync(dpy, False);
       +                        break;
                        case Expose:
                                handler[Expose](&ev);
                                break;
       @@ -92,6 +122,11 @@ resizemouse(Client *c) {
                        case ButtonRelease:
                                XUngrabPointer(dpy, CurrentTime);
                                return;
       +                case DestroyNotify:
       +                case UnmapNotify:
       +                        XUngrabPointer(dpy, CurrentTime);
       +                        handler[ev.type](&ev);
       +                        return;
                        }
                }
        }
       @@ -146,23 +181,6 @@ buttonpress(XEvent *e) {
        }
        
        static void
       -synconfig(Client *c, int x, int y, int w, int h, unsigned int border) {
       -        XEvent synev;
       -
       -        synev.type = ConfigureNotify;
       -        synev.xconfigure.display = dpy;
       -        synev.xconfigure.event = c->win;
       -        synev.xconfigure.window = c->win;
       -        synev.xconfigure.x = x;
       -        synev.xconfigure.y = y;
       -        synev.xconfigure.width = w;
       -        synev.xconfigure.height = h;
       -        synev.xconfigure.border_width = border;
       -        synev.xconfigure.above = None;
       -        XSendEvent(dpy, c->win, True, NoEventMask, &synev);
       -}
       -
       -static void
        configurerequest(XEvent *e) {
                unsigned long newmask;
                Client *c;