summary refs log tree commit diff
path: root/conf.c
diff options
context:
space:
mode:
authorokan <okan>2015-03-26 21:41:43 +0000
committerokan <okan>2015-03-26 21:41:43 +0000
commitbad97699f9142838adec5005dc7a44d6b5bb187e (patch)
tree7d7ecc0234dfc11fe1f35b496df6607e627d6480 /conf.c
parentac42dff6c1a55baf1f73a98dee9b6c4541b64e7b (diff)
downloadcwm-bad97699f9142838adec5005dc7a44d6b5bb187e.tar.gz
cwm-bad97699f9142838adec5005dc7a44d6b5bb187e.tar.xz
cwm-bad97699f9142838adec5005dc7a44d6b5bb187e.zip
Simplify key/mb binding moving argtype into flags and dropping another
variable; removes the need to zero out struct binding, leaving a simple
malloc.
Diffstat (limited to 'conf.c')
-rw-r--r--conf.c20
1 files changed, 8 insertions, 12 deletions
diff --git a/conf.c b/conf.c
index 9d3918d..e5191a3 100644
--- a/conf.c
+++ b/conf.c
@@ -491,11 +491,10 @@ conf_bind_kbd(struct conf *c, const char *bind, const char *cmd)
 {
 	struct binding	*kb;
 	const char	*key;
-	unsigned int	 i, mask;
+	unsigned int	 i;
 
-	kb = xcalloc(1, sizeof(*kb));
-	key = conf_bind_getmask(bind, &mask);
-	kb->modmask |= mask;
+	kb = xmalloc(sizeof(*kb));
+	key = conf_bind_getmask(bind, &kb->modmask);
 
 	kb->press.keysym = XStringToKeysym(key);
 	if (kb->press.keysym == NoSymbol) {
@@ -519,15 +518,13 @@ conf_bind_kbd(struct conf *c, const char *bind, const char *cmd)
 		kb->callback = name_to_func[i].handler;
 		kb->flags = name_to_func[i].flags;
 		kb->argument = name_to_func[i].argument;
-		kb->argtype |= ARG_INT;
 		TAILQ_INSERT_TAIL(&c->keybindingq, kb, entry);
 		return(1);
 	}
 
 	kb->callback = kbfunc_cmdexec;
-	kb->flags = 0;
+	kb->flags = CWM_CMD;
 	kb->argument.c = xstrdup(cmd);
-	kb->argtype |= ARG_CHAR;
 	TAILQ_INSERT_TAIL(&c->keybindingq, kb, entry);
 	return(1);
 }
@@ -543,7 +540,7 @@ conf_unbind_kbd(struct conf *c, struct binding *unbind)
 
 		if (key->press.keysym == unbind->press.keysym) {
 			TAILQ_REMOVE(&c->keybindingq, key, entry);
-			if (key->argtype & ARG_CHAR)
+			if (key->flags & CWM_CMD)
 				free(key->argument.c);
 			free(key);
 		}
@@ -555,11 +552,10 @@ conf_bind_mouse(struct conf *c, const char *bind, const char *cmd)
 {
 	struct binding	*mb;
 	const char	*button, *errstr;
-	unsigned int	 i, mask;
+	unsigned int	 i;
 
-	mb = xcalloc(1, sizeof(*mb));
-	button = conf_bind_getmask(bind, &mask);
-	mb->modmask |= mask;
+	mb = xmalloc(sizeof(*mb));
+	button = conf_bind_getmask(bind, &mb->modmask);
 
 	mb->press.button = strtonum(button, Button1, Button5, &errstr);
 	if (errstr) {