tnow tiled windows can be resized/moved, their floating state will be toggled implicitely - 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 d1ce3eac33a636e03a1f5a887897ae8046065ff7
 (DIR) parent 9449ea3e002990372383835b85ed18ceaf75e400
 (HTM) Author: Anselm R. Garbe <garbeam@gmail.com>
       Date:   Sun, 16 Sep 2007 13:27:33 +0200
       
       now tiled windows can be resized/moved, their floating state will be toggled implicitely
       Diffstat:
         M dwm.1                               |       4 ++--
         M dwm.c                               |      16 ++++++++++------
       
       2 files changed, 12 insertions(+), 8 deletions(-)
       ---
 (DIR) diff --git a/dwm.1 b/dwm.1
       t@@ -117,13 +117,13 @@ Quit dwm.
        .SS Mouse commands
        .TP
        .B Mod1\-Button1
       -Move current window while dragging (floating layout only).
       +Move current window while dragging. Tiled windows will be toggled to the floating state.
        .TP
        .B Mod1\-Button2
        Zooms/cycles current window to/from master area (tiled layout only).
        .TP
        .B Mod1\-Button3
       -Resize current window while dragging (floating layout only).
       +Resize current window while dragging. Tiled windows will be toggled to the floating state.
        .SH CUSTOMIZATION
        dwm is customized by creating a custom config.h and (re)compiling the source
        code. This keeps it fast, secure and simple.
 (DIR) diff --git a/dwm.c b/dwm.c
       t@@ -335,16 +335,20 @@ buttonpress(XEvent *e) {
                        focus(c);
                        if(CLEANMASK(ev->state) != MODKEY)
                                return;
       -                if(ev->button == Button1 && (isarrange(floating) || c->isfloating)) {
       -                        restack();
       +                if(ev->button == Button1) {
       +                        if(!isarrange(floating) && !c->isfloating)
       +                                togglefloating(NULL);
       +                        else
       +                                restack();
                                movemouse(c);
                        }
                        else if(ev->button == Button2)
                                zoom(NULL);
       -                else if(ev->button == Button3
       -                && (isarrange(floating) || c->isfloating) && !c->isfixed)
       -                {
       -                        restack();
       +                else if(ev->button == Button3 && !c->isfixed) {
       +                        if(!isarrange(floating) && !c->isfloating)
       +                                togglefloating(NULL);
       +                        else
       +                                restack();
                                resizemouse(c);
                        }
                }