t* dwm + patches
       
   URI git clone git://git.codevoid.de/dwm-sdk
   DIR Log
   DIR Files
   DIR Refs
   DIR README
   DIR LICENSE
       ---
   DIR commit cdb8e274531e5e82818d90e2cc4e3b46e7fe8eb6
   DIR parent 5c4913e9838534e880a1334ddc76c80810019f62
   URI Author: Anselm R Garbe <garbeam@gmail.com>
       Date:   Wed, 24 Jun 2009 11:14:51 +0100
       
       some hotfix cleanup related to wild selmon-> destruction
       Diffstat:
         M dwm.c                               |      35 ++++++++++---------------------
       
       1 file changed, 11 insertions(+), 24 deletions(-)
       ---
   DIR diff --git a/dwm.c b/dwm.c
       t@@ -1,4 +1,4 @@
       -#define XINULATOR /* debug, simulates dual head */
       +//#define XINULATOR /* debug, simulates dual head */
        /* See LICENSE file for copyright and license details.
         *
         * dynamic window manager is designed like any other X client as well. It is
       t@@ -1649,9 +1649,11 @@ updatebarpos(Monitor *m) {
        
        void
        updategeom(void) {
       -        int i, n = 1;
       +        int i, di, n = 1, x, y;
       +        unsigned int dui;
                Client *c;
                Monitor *newmons = NULL, *m, *tm;
       +        Window dummy;
        
        #ifdef XINULATOR
                n = 2;
       t@@ -1720,16 +1722,6 @@ updategeom(void) {
                        m->showbar = showbar;
                        m->topbar = topbar;
                        updatebarpos(m);
       -                /* reassign all clients with same screen number */
       -                for(tm = mons; tm; tm = tm->next)
       -                        if(tm->screen_number == m->screen_number) {
       -                                m->clients = tm->clients;
       -                                m->sel = m->stack = tm->stack;
       -                                tm->clients = NULL;
       -                                tm->stack = NULL;
       -                                for(c = m->clients; c; c = c->next)
       -                                        c->mon = m;
       -                        }
                }
        
                /* reassign left over clients of disappeared monitors */
       t@@ -1744,18 +1736,13 @@ updategeom(void) {
                }
        
                /* select focused monitor */
       -        if(!selmon) {
       -                selmon = newmons;
       -                int di, x, y;
       -                unsigned int dui;
       -                Window dummy;
       -                if(XQueryPointer(dpy, root, &dummy, &dummy, &x, &y, &di, &di, &dui)) 
       -                        for(m = newmons; m; m = m->next)
       -                                if(INRECT(x, y, m->wx, m->wy, m->ww, m->wh)) {
       -                                        selmon = m;
       -                                        break;
       -                                }
       -        }
       +        selmon = newmons;
       +        if(XQueryPointer(dpy, root, &dummy, &dummy, &x, &y, &di, &di, &dui)) 
       +                for(m = newmons; m; m = m->next)
       +                        if(INRECT(x, y, m->wx, m->wy, m->ww, m->wh)) {
       +                                selmon = m;
       +                                break;
       +                        }
        
                /* final assignment of new monitors */
                cleanupmons();