t* dwm + patches
       
   URI git clone git://git.codevoid.de/dwm-sdk
   DIR Log
   DIR Files
   DIR Refs
   DIR README
   DIR LICENSE
       ---
   DIR commit fc109ea8f72e662ed58ef45329b6ca9e91d61d3b
   DIR parent b975c4728046052a32626378df193217a96fbefc
   URI Author: Anselm R. Garbe <garbeam@gmail.com>
       Date:   Sun, 19 Aug 2007 18:39:54 +0200
       
       fixed misappearance of iconified windows on SIGKILL
       Diffstat:
         M main.c                              |      27 ++++++++++++++++++++++++++-
         M screen.c                            |       6 +++---
       
       2 files changed, 29 insertions(+), 4 deletions(-)
       ---
   DIR diff --git a/main.c b/main.c
       t@@ -111,6 +111,24 @@ initfont(const char *fontstr) {
                dc.font.height = dc.font.ascent + dc.font.descent;
        }
        
       +static long
       +getstate(Window w) {
       +        int format, status;
       +        long result = -1;
       +        unsigned char *p = NULL;
       +        unsigned long n, extra;
       +        Atom real;
       +
       +        status = XGetWindowProperty(dpy, w, wmatom[WMState], 0L, 2L, False, wmatom[WMState],
       +                        &real, &format, &n, &extra, (unsigned char **)&p);
       +        if(status != Success)
       +                return -1;
       +        if(n != 0)
       +                result = *p;
       +        XFree(p);
       +        return result;
       +}
       +
        static void
        scan(void) {
                unsigned int i, num;
       t@@ -123,7 +141,14 @@ scan(void) {
                                if(!XGetWindowAttributes(dpy, wins[i], &wa)
                                || wa.override_redirect || XGetTransientForHint(dpy, wins[i], &d1))
                                        continue;
       -                        if(wa.map_state == IsViewable)
       +                        if(wa.map_state == IsViewable || getstate(wins[i]) == IconicState)
       +                                manage(wins[i], &wa);
       +                }
       +                for(i = 0; i < num; i++) { /* now the transients */
       +                        if(!XGetWindowAttributes(dpy, wins[i], &wa))
       +                                continue;
       +                        if(XGetTransientForHint(dpy, wins[i], &d1)
       +                        && (wa.map_state == IsViewable || getstate(wins[i]) == IconicState))
                                        manage(wins[i], &wa);
                        }
                }
   DIR diff --git a/screen.c b/screen.c
       t@@ -60,7 +60,7 @@ setdwmprops(void) {
                for(i = 0; i < ntags && i < sizeof prop - 1; i++)
                        prop[i] = seltags[i] ? '1' : '0';
                if(i < sizeof prop - 1)
       -                prop[i++] = (char)ltidx;
       +                prop[i++] = (char)ltidx + '0';
                prop[i] = '\0';
                XChangeProperty(dpy, root, dwmprops, XA_STRING, 8,
                                PropModeReplace, (unsigned char *)prop, i);
       t@@ -223,8 +223,8 @@ getdwmprops(void) {
                        for(i = 0; i < ntags && i < sizeof prop - 1 && prop[i] != '\0'; i++)
                                seltags[i] = prop[i] == '1';
                        if(i < sizeof prop - 1 && prop[i] != '\0') {
       -                        if(prop[i] < nlayouts)
       -                                ltidx = prop[i];
       +                        if((unsigned int)(prop[i] - '0') < nlayouts)
       +                                ltidx = prop[i] - '0';
                        }
                }
        }