tadded configure(), but this doesn't really fix those frking broken SDL apps - dwm - [fork] customized build of dwm, the dynamic window manager
 (HTM) git clone git://src.adamsgaard.dk/dwm
 (DIR) Log
 (DIR) Files
 (DIR) Refs
 (DIR) README
 (DIR) LICENSE
       ---
 (DIR) commit b4d53bf194f9f9214b6c79d397d723ba53663b4b
 (DIR) parent 67bc08d1b938842d27d976da9bbbc210b1f860b7
 (HTM) Author: arg@mmvi <unknown>
       Date:   Tue, 26 Sep 2006 07:40:19 +0200
       
       added configure(), but this doesn't really fix those frking broken SDL apps
       Diffstat:
         M client.c                            |      18 ++++++++++++++++++
         M dwm.h                               |       1 +
         M event.c                             |      21 ++++++++-------------
       
       3 files changed, 27 insertions(+), 13 deletions(-)
       ---
 (DIR) diff --git a/client.c b/client.c
       t@@ -81,6 +81,23 @@ ban(Client *c) {
        }
        
        void
       +configure(Client *c) {
       +        XEvent synev;
       +
       +        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);
       +}
       +
       +void
        focus(Client *c) {
                Client *old;
        
       t@@ -299,6 +316,7 @@ resize(Client *c, Bool sizehints, Corner sticky) {
                else
                        wc.border_width = 1;
                XConfigureWindow(dpy, c->win, CWX | CWY | CWWidth | CWHeight | CWBorderWidth, &wc);
       +        configure(c);
                XSync(dpy, False);
        }
        
 (DIR) diff --git a/dwm.h b/dwm.h
       t@@ -109,6 +109,7 @@ extern Window root, barwin;
        
        /* client.c */
        extern void ban(Client *c);                        /* ban c from screen */
       +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 */
        extern Client *getctitle(Window w);                /* return client of title window */
 (DIR) diff --git a/event.c b/event.c
       t@@ -1,3 +1,4 @@
       +#include <stdio.h>
        /*
         * (C)opyright MMVI Anselm R. Garbe <garbeam at gmail dot com>
         * See LICENSE file for license details.
       t@@ -38,6 +39,7 @@ movemouse(Client *c) {
                        XMaskEvent(dpy, MOUSEMASK | ExposureMask, &ev);
                        switch (ev.type) {
                        case ButtonRelease:
       +                        resize(c, True, TopLeft);
                                XUngrabPointer(dpy, CurrentTime);
                                return;
                        case Expose:
       t@@ -71,6 +73,7 @@ resizemouse(Client *c) {
                        XMaskEvent(dpy, MOUSEMASK | ExposureMask, &ev);
                        switch(ev.type) {
                        case ButtonRelease:
       +                        resize(c, True, TopLeft);
                                XUngrabPointer(dpy, CurrentTime);
                                return;
                        case Expose:
       t@@ -151,6 +154,7 @@ configurerequest(XEvent *e) {
                XEvent synev;
                XWindowChanges wc;
        
       +        fputs("configurerequest\n", stderr);
                if((c = getclient(ev->window))) {
                        c->ismax = False;
                        gravitate(c, True);
       t@@ -172,19 +176,8 @@ configurerequest(XEvent *e) {
                        newmask = ev->value_mask & (~(CWSibling | CWStackMode | CWBorderWidth));
                        if(newmask)
                                XConfigureWindow(dpy, c->win, newmask, &wc);
       -                else {
       -                        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);
       -                }
       +                else
       +                        configure(c);
                        XSync(dpy, False);
                        if(c->isfloat)
                                resize(c, False, TopLeft);
       t@@ -218,6 +211,7 @@ enternotify(XEvent *e) {
                Client *c;
                XCrossingEvent *ev = &e->xcrossing;
        
       +        fputs("enternotify\n", stderr);
                if(ev->mode != NotifyNormal || ev->detail == NotifyInferior)
                        return;
        
       t@@ -305,6 +299,7 @@ propertynotify(XEvent *e) {
                Window trans;
                XPropertyEvent *ev = &e->xproperty;
        
       +        fputs("propertynotify\n", stderr);
                if(ev->state == PropertyDelete)
                        return; /* ignore */