mirror of
https://github.com/leahneukirchen/cwm.git
synced 2023-08-10 21:13:12 +03:00
Simplify key/mb binding moving argtype into flags and dropping another
variable; removes the need to zero out struct binding, leaving a simple malloc.
This commit is contained in:
parent
ac42dff6c1
commit
bad97699f9
2
calmwm.h
2
calmwm.h
@ -84,6 +84,7 @@
|
|||||||
#define CWM_NOGAP 0x0002
|
#define CWM_NOGAP 0x0002
|
||||||
|
|
||||||
#define CWM_WIN 0x0001
|
#define CWM_WIN 0x0001
|
||||||
|
#define CWM_CMD 0x0002
|
||||||
|
|
||||||
#define CWM_QUIT 0x0000
|
#define CWM_QUIT 0x0000
|
||||||
#define CWM_RUNNING 0x0001
|
#define CWM_RUNNING 0x0001
|
||||||
@ -252,7 +253,6 @@ struct binding {
|
|||||||
unsigned int modmask;
|
unsigned int modmask;
|
||||||
union press press;
|
union press press;
|
||||||
int flags;
|
int flags;
|
||||||
int argtype;
|
|
||||||
};
|
};
|
||||||
TAILQ_HEAD(keybinding_q, binding);
|
TAILQ_HEAD(keybinding_q, binding);
|
||||||
TAILQ_HEAD(mousebinding_q, binding);
|
TAILQ_HEAD(mousebinding_q, binding);
|
||||||
|
20
conf.c
20
conf.c
@ -491,11 +491,10 @@ conf_bind_kbd(struct conf *c, const char *bind, const char *cmd)
|
|||||||
{
|
{
|
||||||
struct binding *kb;
|
struct binding *kb;
|
||||||
const char *key;
|
const char *key;
|
||||||
unsigned int i, mask;
|
unsigned int i;
|
||||||
|
|
||||||
kb = xcalloc(1, sizeof(*kb));
|
kb = xmalloc(sizeof(*kb));
|
||||||
key = conf_bind_getmask(bind, &mask);
|
key = conf_bind_getmask(bind, &kb->modmask);
|
||||||
kb->modmask |= mask;
|
|
||||||
|
|
||||||
kb->press.keysym = XStringToKeysym(key);
|
kb->press.keysym = XStringToKeysym(key);
|
||||||
if (kb->press.keysym == NoSymbol) {
|
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->callback = name_to_func[i].handler;
|
||||||
kb->flags = name_to_func[i].flags;
|
kb->flags = name_to_func[i].flags;
|
||||||
kb->argument = name_to_func[i].argument;
|
kb->argument = name_to_func[i].argument;
|
||||||
kb->argtype |= ARG_INT;
|
|
||||||
TAILQ_INSERT_TAIL(&c->keybindingq, kb, entry);
|
TAILQ_INSERT_TAIL(&c->keybindingq, kb, entry);
|
||||||
return(1);
|
return(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
kb->callback = kbfunc_cmdexec;
|
kb->callback = kbfunc_cmdexec;
|
||||||
kb->flags = 0;
|
kb->flags = CWM_CMD;
|
||||||
kb->argument.c = xstrdup(cmd);
|
kb->argument.c = xstrdup(cmd);
|
||||||
kb->argtype |= ARG_CHAR;
|
|
||||||
TAILQ_INSERT_TAIL(&c->keybindingq, kb, entry);
|
TAILQ_INSERT_TAIL(&c->keybindingq, kb, entry);
|
||||||
return(1);
|
return(1);
|
||||||
}
|
}
|
||||||
@ -543,7 +540,7 @@ conf_unbind_kbd(struct conf *c, struct binding *unbind)
|
|||||||
|
|
||||||
if (key->press.keysym == unbind->press.keysym) {
|
if (key->press.keysym == unbind->press.keysym) {
|
||||||
TAILQ_REMOVE(&c->keybindingq, key, entry);
|
TAILQ_REMOVE(&c->keybindingq, key, entry);
|
||||||
if (key->argtype & ARG_CHAR)
|
if (key->flags & CWM_CMD)
|
||||||
free(key->argument.c);
|
free(key->argument.c);
|
||||||
free(key);
|
free(key);
|
||||||
}
|
}
|
||||||
@ -555,11 +552,10 @@ conf_bind_mouse(struct conf *c, const char *bind, const char *cmd)
|
|||||||
{
|
{
|
||||||
struct binding *mb;
|
struct binding *mb;
|
||||||
const char *button, *errstr;
|
const char *button, *errstr;
|
||||||
unsigned int i, mask;
|
unsigned int i;
|
||||||
|
|
||||||
mb = xcalloc(1, sizeof(*mb));
|
mb = xmalloc(sizeof(*mb));
|
||||||
button = conf_bind_getmask(bind, &mask);
|
button = conf_bind_getmask(bind, &mb->modmask);
|
||||||
mb->modmask |= mask;
|
|
||||||
|
|
||||||
mb->press.button = strtonum(button, Button1, Button5, &errstr);
|
mb->press.button = strtonum(button, Button1, Button5, &errstr);
|
||||||
if (errstr) {
|
if (errstr) {
|
||||||
|
Loading…
Reference in New Issue
Block a user