t* dwm + patches
       
   URI git clone git://git.codevoid.de/dwm-sdk
   DIR Log
   DIR Files
   DIR Refs
   DIR README
   DIR LICENSE
       ---
   DIR commit 5f19423c7bd2aa1ebb3010af15bebffbc3a9cbc3
   DIR parent d66ad1457e6b1e3fc18c01767fdb499acaef3c8e
   URI Author: Anselm R. Garbe <garbeam@gmail.com>
       Date:   Sun,  9 Dec 2007 13:39:29 +0100
       
       simplified Mod-m
       Diffstat:
         M config.def.h                        |       2 +-
         M dwm.1                               |       2 +-
         M dwm.c                               |      46 +++++++------------------------
       
       3 files changed, 12 insertions(+), 38 deletions(-)
       ---
   DIR diff --git a/config.def.h b/config.def.h
       t@@ -46,7 +46,7 @@ Key keys[] = {
                { MODKEY,                        XK_k,                focusprev,        NULL },
                { MODKEY,                        XK_h,                setmwfact,        "-0.05" },
                { MODKEY,                        XK_l,                setmwfact,        "+0.05" },
       -        { MODKEY,                        XK_m,                togglemax,        NULL },
       +        { MODKEY,                        XK_m,                maximize,        NULL },
                { MODKEY,                        XK_r,                reapply,        NULL },
                { MODKEY,                        XK_Return,        zoom,                NULL },
                { MODKEY,                        XK_Tab,                viewprevtag,        NULL },
   DIR diff --git a/dwm.1 b/dwm.1
       t@@ -78,7 +78,7 @@ Focus previous window.
        Increases the master area width about 5% (tiled layout only).
        .TP
        .B Mod1\-m
       -Toggles maximization of current window.
       +Maximizes current window (floating layout/window only).
        .TP
        .B Mod1\-r
        Re-applies tagging rules to all windows.
   DIR diff --git a/dwm.c b/dwm.c
       t@@ -61,12 +61,11 @@ typedef struct Client Client;
        struct Client {
                char name[256];
                int x, y, w, h;
       -        int rx, ry, rw, rh; /* revert geometry */
                int basew, baseh, incw, inch, maxw, maxh, minw, minh;
                int minax, maxax, minay, maxay;
                long flags;
                unsigned int border, oldborder;
       -        Bool isbanned, isfixed, ismax, isfloating, wasfloating;
       +        Bool isbanned, isfixed, isfloating;
                Bool *tags;
                Client *next;
                Client *prev;
       t@@ -157,6 +156,7 @@ void leavenotify(XEvent *e);
        void manage(Window w, XWindowAttributes *wa);
        void mappingnotify(XEvent *e);
        void maprequest(XEvent *e);
       +void maximize(const char *arg);
        void movemouse(Client *c);
        Client *nexttiled(Client *c);
        void propertynotify(XEvent *e);
       t@@ -178,7 +178,6 @@ unsigned int textw(const char *text);
        void tile(void);
        void togglebar(const char *arg);
        void togglefloating(const char *arg);
       -void togglemax(const char *arg);
        void toggletag(const char *arg);
        void toggleview(const char *arg);
        void unban(Client *c);
       t@@ -466,7 +465,6 @@ configurerequest(XEvent *e) {
                XWindowChanges wc;
        
                if((c = getclient(ev->window))) {
       -                c->ismax = False;
                        if(ev->value_mask & CWBorderWidth)
                                c->border = ev->border_width;
                        if(c->isfixed || c->isfloating || (floating == layout->arrange)) {
       t@@ -563,7 +561,7 @@ drawbar(void) {
                        dc.x = x;
                        if(sel) {
                                drawtext(sel->name, dc.sel);
       -                        drawsquare(sel->ismax, sel->isfloating, dc.sel);
       +                        drawsquare(False, sel->isfloating, dc.sel);
                        }
                        else
                                drawtext(NULL, dc.norm);
       t@@ -1079,6 +1077,13 @@ maprequest(XEvent *e) {
        }
        
        void
       +maximize(const char *arg) {
       +        if(!sel || (!sel->isfloating && layout->arrange != floating))
       +                return;
       +        resize(sel, wax, way, waw - 2 * sel->border, wah - 2 * sel->border, True);
       +}
       +
       +void
        movemouse(Client *c) {
                int x1, y1, ocx, ocy, di, nx, ny;
                unsigned int dui;
       t@@ -1090,7 +1095,6 @@ movemouse(Client *c) {
                if(XGrabPointer(dpy, root, False, MOUSEMASK, GrabModeAsync, GrabModeAsync,
                                None, cursor[CurMove], CurrentTime) != GrabSuccess)
                        return;
       -        c->ismax = False;
                XQueryPointer(dpy, root, &dummy, &dummy, &x1, &y1, &di, &di, &dui);
                for(;;) {
                        XMaskEvent(dpy, MOUSEMASK | ExposureMask | SubstructureRedirectMask, &ev);
       t@@ -1248,7 +1252,6 @@ resizemouse(Client *c) {
                if(XGrabPointer(dpy, root, False, MOUSEMASK, GrabModeAsync, GrabModeAsync,
                                None, cursor[CurResize], CurrentTime) != GrabSuccess)
                        return;
       -        c->ismax = False;
                XWarpPointer(dpy, None, c->win, 0, 0, 0, 0, c->w + c->border - 1, c->h + c->border - 1);
                for(;;) {
                        XMaskEvent(dpy, MOUSEMASK | ExposureMask | SubstructureRedirectMask , &ev);
       t@@ -1609,7 +1612,6 @@ tile(void) {
                ny = way;
                nw = 0; /* gcc stupidity requires this */
                for(i = 0, c = mc = nexttiled(clients); c; c = nexttiled(c->next), i++) {
       -                c->ismax = False;
                        if(i == 0) { /* master */
                                nw = mw - 2 * c->border;
                                nh = wah - 2 * c->border;
       t@@ -1655,34 +1657,6 @@ togglefloating(const char *arg) {
        }
        
        void
       -togglemax(const char *arg) {
       -        XEvent ev;
       -
       -        if(!sel || sel->isfixed)
       -                return;
       -        if((sel->ismax = !sel->ismax)) {
       -                if((layout->arrange == floating) || sel->isfloating)
       -                        sel->wasfloating = True;
       -                else {
       -                        togglefloating(NULL);
       -                        sel->wasfloating = False;
       -                }
       -                sel->rx = sel->x;
       -                sel->ry = sel->y;
       -                sel->rw = sel->w;
       -                sel->rh = sel->h;
       -                resize(sel, wax, way, waw - 2 * sel->border, wah - 2 * sel->border, True);
       -        }
       -        else {
       -                resize(sel, sel->rx, sel->ry, sel->rw, sel->rh, True);
       -                if(!sel->wasfloating)
       -                        togglefloating(NULL);
       -        }
       -        drawbar();
       -        while(XCheckMaskEvent(dpy, EnterWindowMask, &ev));
       -}
       -
       -void
        toggletag(const char *arg) {
                unsigned int i, j;