From a923298d3577dca0e69fd70edbef56c7822258e3 Mon Sep 17 00:00:00 2001
From: "Anselm R. Garbe" <garbeam@gmail.com>
Date: Fri, 17 Aug 2007 21:10:50 +0200
Subject: applied Jukka Salmi's setmwfact patch

---
 config.arg.h     |  4 ++--
 config.default.h |  4 ++--
 tile.c           | 16 +++++++++++-----
 tile.h           |  2 +-
 4 files changed, 16 insertions(+), 10 deletions(-)

diff --git a/config.arg.h b/config.arg.h
index 79bdf78..5cac5b5 100644
--- a/config.arg.h
+++ b/config.arg.h
@@ -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 }, \
diff --git a/config.default.h b/config.default.h
index 4e9a16f..dab8cc7 100644
--- a/config.default.h
+++ b/config.default.h
@@ -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 --git a/tile.c b/tile.c
index 386832d..0955e63 100644
--- a/tile.c
+++ b/tile.c
@@ -9,18 +9,24 @@ static double mwfact = MWFACT;
 /* extern */
 
 void
-addtomwfact(const char *arg) {
-	double delta;
+setmwfact(const char *arg) {
+	double delta, newfact;
 
 	if(!isarrange(tile))
 		return;
-
 	/* arg handling, manipulate mwfact */
 	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 --git a/tile.h b/tile.h
index cd4e394..38e0c76 100644
--- a/tile.h
+++ b/tile.h
@@ -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 */
-- 
cgit v1.2.3-13-gbd6f