t* dwm + patches
       
   URI git clone git://git.codevoid.de/dwm-sdk
   DIR Log
   DIR Files
   DIR Refs
   DIR README
   DIR LICENSE
       ---
   DIR commit 896f08d7d553f7def3877648c113cf03e6ca546a
   DIR parent 83d23908d3438d7f1f62533a7c8d96fc1019df55
   URI Author: Anselm R. Garbe <garbeam@wmii.de>
       Date:   Tue, 11 Jul 2006 23:46:39 +0200
       
       fixed several other stuff, coming closer to something useful
       
       Diffstat:
         M bar.c                               |       2 +-
         M client.c                            |      29 ++++++++++++++++-------------
         M config.h                            |       2 +-
         M event.c                             |       4 ++++
         M wm.h                                |       1 +
       
       5 files changed, 23 insertions(+), 15 deletions(-)
       ---
   DIR diff --git a/bar.c b/bar.c
       t@@ -15,7 +15,7 @@ draw_bar()
                if(stack) {
                        brush.rect.width = textwidth(&brush.font, stack->name) + labelheight(&brush.font);
                        swap((void **)&brush.fg, (void **)&brush.bg);
       -                draw(dpy, &brush, False, stack->name);
       +                draw(dpy, &brush, True, stack->name);
                        swap((void **)&brush.fg, (void **)&brush.bg);
                        brush.rect.x += brush.rect.width;
                }
   DIR diff --git a/client.c b/client.c
       t@@ -104,19 +104,21 @@ manage(Window w, XWindowAttributes *wa)
        
                c = emallocz(sizeof(Client));
                c->win = w;
       -        c->x = wa->x;
       -        c->y = wa->y;
       -        c->w = wa->width;
       +        c->tx = c->x = wa->x;
       +        c->ty = c->y = wa->y;
       +        c->tw = c->w = wa->width;
                c->h = wa->height;
       +        c->th = barrect.height;
                update_size(c);
                XSetWindowBorderWidth(dpy, c->win, 1);
       +        XSetWindowBorder(dpy, c->win, brush.border);
                XSelectInput(dpy, c->win, CLIENT_MASK);
                XGetTransientForHint(dpy, c->win, &c->trans);
                twa.override_redirect = 1;
                twa.background_pixmap = ParentRelative;
       -        twa.event_mask = ExposureMask;
       +        twa.event_mask = SubstructureNotifyMask | ExposureMask;
        
       -        c->title = XCreateWindow(dpy, root, c->x, c->y, c->w, barrect.height,
       +        c->title = XCreateWindow(dpy, root, c->tx, c->ty, c->tw, c->th,
                                0, DefaultDepth(dpy, screen), CopyFromParent,
                                DefaultVisual(dpy, screen),
                                CWOverrideRedirect | CWBackPixmap | CWEventMask, &twa);
       t@@ -145,7 +147,6 @@ resize(Client *c)
                XConfigureEvent e;
        
                XMoveResizeWindow(dpy, c->win, c->x, c->y, c->w, c->h);
       -        XMoveResizeWindow(dpy, c->title, c->x + c->w / 3, c->y, 2 * c->w / 3, barrect.height);
                e.type = ConfigureNotify;
                e.event = c->win;
                e.window = c->win;
       t@@ -177,7 +178,6 @@ unmanage(Client *c)
                XSetErrorHandler(dummy_error_handler);
        
                XUngrabButton(dpy, AnyButton, AnyModifier, c->win);
       -        XUnmapWindow(dpy, c->win);
                XDestroyWindow(dpy, c->title);
        
                for(l=&clients; *l && *l != c; l=&(*l)->next);
       t@@ -210,17 +210,20 @@ getclient(Window w)
        void
        draw_client(Client *c)
        {
       -        if(!c)
       -                return;
                if(c == stack)
                        draw_bar();
        
       +        c->tw = textwidth(&brush.font, c->name) + labelheight(&brush.font);
       +        c->tx = c->x + c->w - c->tw + 2;
       +        c->ty = c->y;
       +        XMoveResizeWindow(dpy, c->title, c->tx, c->ty, c->tw, c->th);
       +
                brush.rect.x = brush.rect.y = 0;
       -        brush.rect.width = 2 * c->w / 3;
       -        brush.rect.height = barrect.height;
       +        brush.rect.width = c->tw;
       +        brush.rect.height = c->th;
        
                draw(dpy, &brush, True, c->name);
       -        XCopyArea(dpy, brush.drawable, c->title, brush.gc, 0, 0,
       -                        brush.rect.width, brush.rect.height, 0, 0);
       +        XCopyArea(dpy, brush.drawable, c->title, brush.gc,
       +                        0, 0, c->tw, c->th, 0, 0);
                XFlush(dpy);
        }
   DIR diff --git a/config.h b/config.h
       t@@ -6,5 +6,5 @@
        #define FONT                "-*-terminus-medium-*-*-*-13-*-*-*-*-*-iso10646-*"
        #define BGCOLOR                "#000000"
        #define FGCOLOR                "#ffaa00"
       -#define BORDERCOLOR        "#000000"
       +#define BORDERCOLOR        "#ee8800"
        #define STATUSDELAY        10 /* milliseconds */
   DIR diff --git a/event.c b/event.c
       t@@ -204,6 +204,10 @@ propertynotify(XEvent *e)
                        }
                        if(ev->atom == XA_WM_NAME || ev->atom == net_atom[NetWMName]) {
                                update_name(c);
       +                        if(c == stack)
       +                                draw_bar();
       +                        else
       +                                draw_client(c);
                        }
                }
        }
   DIR diff --git a/wm.h b/wm.h
       t@@ -25,6 +25,7 @@ struct Client {
                char name[256], tag[256];
                int proto;
                int x, y, w, h;
       +        int tx, ty, tw, th;
                int basew, baseh, incw, inch, maxw, maxh, minw, minh;
                long flags; 
                Window win;