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 },
\