JasonWoof Got questions, comments, patches, etc.? Contact Jason Woofenden
right, multihead issue is not involved with growcol
[dwm.git] / view.c
diff --git a/view.c b/view.c
index 21efa16..4c656f3 100644 (file)
--- a/view.c
+++ b/view.c
@@ -57,7 +57,7 @@ detach(Client *c)
 void
 dofloat(Arg *arg)
 {
-       Client *c, *fc;
+       Client *c;
 
        maximized = False;
 
@@ -77,7 +77,7 @@ void
 dotile(Arg *arg)
 {
        int h, i, n, w;
-       Client *c, *fc;
+       Client *c;
 
        maximized = False;
 
@@ -169,6 +169,26 @@ focusprev(Arg *arg)
        }
 }
 
+void
+growcol(Arg *arg)
+{
+       Client *c = getnext(clients);
+
+       if(!sel || !getnext(c->next) || (arrange != dotile))
+               return;
+       if(sel == getnext(clients)) {
+               if(mw + arg->i > sw - 100)
+                       return;
+               mw += arg->i;
+       }
+       else {
+               if(mw - arg->i < 100)
+                       return;
+               mw -= arg->i;
+       }
+       arrange(NULL);
+}
+
 Bool
 isvisible(Client *c)
 {
@@ -207,13 +227,15 @@ restack()
 
        fi = 0;
        mi = 2 * f;
-       if(sel->isfloat || arrange == dofloat) {
-               wins[fi++] = sel->twin;
-               wins[fi++] = sel->win;
-       }
-       else {
-               wins[mi++] = sel->twin;
-               wins[mi++] = sel->win;
+       if(sel) {
+               if(sel->isfloat || arrange == dofloat) {
+                       wins[fi++] = sel->twin;
+                       wins[fi++] = sel->win;
+               }
+               else {
+                       wins[mi++] = sel->twin;
+                       wins[mi++] = sel->win;
+               }
        }
        for(c = clients; c; c = c->next)
                if(isvisible(c) && c != sel) {