[ create a new paste ] login | about

Link: http://codepad.org/0goNv1Wa    [ raw code | fork ]

C, pasted on Feb 8:
--- dwm-6.0/old.dwm.c       2011-12-19 12:02:46.000000000 -0300
+++ dwm-6.0/dwm.c      2012-02-07 21:57:07.403678228 -0300
@@ -127,6 +127,7 @@
 struct Monitor {
        char ltsymbol[16];
        float mfact;
+       float mhfact;
        int nmaster;
        int num;
        int by;               /* bar geometry */
@@ -220,6 +221,7 @@
 static void setfullscreen(Client *c, Bool fullscreen);
 static void setlayout(const Arg *arg);
 static void setmfact(const Arg *arg);
+static void setmhfact(const Arg *arg);
 static void setup(void);
 static void showhide(Client *c);
 static void sigchld(int unused);
@@ -651,6 +653,7 @@
                die("fatal: could not malloc() %u bytes\n", sizeof(Monitor));
        m->tagset[0] = m->tagset[1] = 1;
        m->mfact = mfact;
+       m->mhfact = mhfact;
        m->nmaster = nmaster;
        m->showbar = showbar;
        m->topbar = topbar;
@@ -1580,6 +1583,20 @@
        arrange(selmon);
 }
 
+/* arg > 1.0 will set mfact absolutly */
+void
+setmhfact(const Arg *arg) {
+       float f;
+
+       if(!arg || !selmon->lt[selmon->sellt]->arrange)
+               return;
+       f = arg->f < 1.0 ? arg->f + selmon->mhfact : arg->f - 1.0;
+       if(f < 0.1 || f > 0.9)
+               return;
+       selmon->mhfact = f;
+       arrange(selmon);
+}
+
 void
 setup(void) {
        XSetWindowAttributes wa;
@@ -1716,7 +1733,10 @@
                mw = m->ww;
        for(i = my = ty = 0, c = nexttiled(m->clients); c; c = nexttiled(c->next), i++)
                if(i < m->nmaster) {
-                       h = (m->wh - my) / (MIN(n, m->nmaster) - i);
+                       if((i == 0) && (MIN(n, m->nmaster) > 1))
+                               h = m->wh * m->mhfact;
+                       else
+                               h = (m->wh - my) / (MIN(n, m->nmaster) - i);
                        resize(c, m->wx, m->wy + my, mw - (2*c->bw), h - (2*c->bw), False);
                        my += HEIGHT(c);
                }


Create a new paste based on this one


Comments: