Enno Gottox Boland --> dwm (2007-08-17 12:38:14 +0200):
> bloated :)
> 
> A smaller version:
[...]

Indeed, sscanf(3) is smarter than I thought! Thanks for the hint.
Updated patch attached.


Regards, Jukka

-- 
bashian roulette:
$ ((RANDOM%6)) || rm -rf ~
diff -rup dwm.orig/tile.h dwm/tile.h
--- dwm.orig/tile.h     2007-08-15 21:53:12.000000000 +0200
+++ dwm/tile.h  2007-08-17 12:48:30.000000000 +0200
@@ -1,6 +1,6 @@
 /* See LICENSE file for copyright and license details. */
 
 /* tile.c */
-void addtomwfact(const char *arg);     /* adds arg value [0.1 .. 0.9] to 
master width factor */
+void setmwfact(const char *arg);       /* sets master width factor */
 void tile(void);                       /* arranges all windows tiled */
 void zoom(const char *arg);            /* zooms the focused client to master 
area, arg is ignored */
diff -rup dwm.orig/tile.c dwm/tile.c
--- dwm.orig/tile.c     2007-08-16 09:21:04.000000000 +0200
+++ dwm/tile.c  2007-08-17 12:50:07.000000000 +0200
@@ -9,8 +9,8 @@ static double mwfact = MWFACT;
 /* extern */
 
 void
-addtomwfact(const char *arg) {
-       double delta;
+setmwfact(const char *arg) {
+       double delta, newfact;
 
        if(!isarrange(tile))
                return;
@@ -19,8 +19,17 @@ addtomwfact(const char *arg) {
        if(arg == NULL)
                mwfact = MWFACT;
        else if(1 == sscanf(arg, "%lf", &delta)) {
-               if(delta + mwfact > 0.1 && delta + mwfact < 0.9)
-                       mwfact += delta;
+               if(arg[0] != '+' && arg[0] != '-')
+                       newfact = delta;
+               else
+                       newfact = mwfact + delta;
+
+               if(newfact < 0.1)
+                       newfact = 0.1;
+               else if(newfact > 0.9)
+                       newfact = 0.9;
+
+               mwfact = newfact;
        }
        arrange();
 }
diff -rup dwm.orig/config.default.h dwm/config.default.h
--- dwm.orig/config.default.h   2007-08-17 10:39:09.000000000 +0200
+++ dwm/config.default.h        2007-08-17 12:49:18.000000000 +0200
@@ -46,8 +46,8 @@ Key keys[] = { \
        { MODKEY,                       XK_b,           togglebar,      NULL }, 
\
        { MODKEY,                       XK_j,           focusnext,      NULL }, 
\
        { MODKEY,                       XK_k,           focusprev,      NULL }, 
\
-       { MODKEY,                       XK_h,           addtomwfact,    "-0.05" 
}, \
-       { MODKEY,                       XK_l,           addtomwfact,    "0.05" 
}, \
+       { MODKEY,                       XK_h,           setmwfact,      "-0.05" 
}, \
+       { MODKEY,                       XK_l,           setmwfact,      "+0.05" 
}, \
        { MODKEY,                       XK_m,           togglemax,      NULL }, 
\
        { MODKEY,                       XK_Return,      zoom,           NULL }, 
\
        { MODKEY|ShiftMask,             XK_space,       togglefloating, NULL }, 
\
diff -rup dwm.orig/config.arg.h dwm/config.arg.h
--- dwm.orig/config.arg.h       2007-08-17 10:39:09.000000000 +0200
+++ dwm/config.arg.h    2007-08-17 12:49:26.000000000 +0200
@@ -48,8 +48,8 @@ Key keys[] = { \
        { MODKEY,                       XK_b,           togglebar,      NULL }, 
\
        { MODKEY,                       XK_j,           focusnext,      NULL }, 
\
        { MODKEY,                       XK_k,           focusprev,      NULL }, 
\
-       { MODKEY,                       XK_h,           addtomwfact,    "-0.05" 
}, \
-       { MODKEY,                       XK_l,           addtomwfact,    "0.05" 
}, \
+       { MODKEY,                       XK_h,           setmwfact,      "-0.05" 
}, \
+       { MODKEY,                       XK_l,           setmwfact,      "+0.05" 
}, \
        { MODKEY,                       XK_m,           togglemax,      NULL }, 
\
        { MODKEY,                       XK_Return,      zoom,           NULL }, 
\
        { MODKEY|ShiftMask,             XK_space,       togglefloating, NULL }, 
\

Reply via email to