From 2dfd021f8bd4298624d10b18969e52032a198a6a Mon Sep 17 00:00:00 2001 From: oga Date: Wed, 25 Jun 2008 22:37:29 +0000 Subject: [PATCH] Actually grab the correct mouse buttons for a window, instead of doing the old hardcoded ones (which now can be wrong). tested by todd@ and johan@. --- calmwm.h | 1 + client.c | 3 +-- conf.c | 30 ++++++++++++++++++++++++++++++ 3 files changed, 32 insertions(+), 2 deletions(-) diff --git a/calmwm.h b/calmwm.h index 33b4949..0432817 100644 --- a/calmwm.h +++ b/calmwm.h @@ -424,6 +424,7 @@ void conf_bindname(struct conf *, char *, char *); void conf_unbind(struct conf *, struct keybinding *); void conf_mousebind(struct conf *, char *, char *); void conf_mouseunbind(struct conf *, struct mousebinding *); +void conf_grab_mouse(struct client_ctx *); int conf_changed(char *); void conf_reload(struct conf *); void conf_font(struct conf *); diff --git a/client.c b/client.c index 0f5ac8d..957f16d 100644 --- a/client.c +++ b/client.c @@ -272,8 +272,7 @@ client_setactive(struct client_ctx *cc, int fg) XInstallColormap(X_Dpy, cc->cmap); XSetInputFocus(X_Dpy, cc->win, RevertToPointerRoot, CurrentTime); - xu_btn_grab(cc->pwin, Mod1Mask, AnyButton); - xu_btn_grab(cc->pwin, ControlMask|Mod1Mask, Button1); + conf_grab_mouse(cc); /* * If we're in the middle of alt-tabbing, don't change * the order please. diff --git a/conf.c b/conf.c index 1767d14..1972287 100644 --- a/conf.c +++ b/conf.c @@ -474,3 +474,33 @@ conf_mouseunbind(struct conf *c, struct mousebinding *unbind) } } +/* + * Grab the mouse buttons that we need for bindings for this client + */ +void +conf_grab_mouse(struct client_ctx *cc) +{ + struct mousebinding *mb; + int button; + + + TAILQ_FOREACH(mb, &Conf.mousebindingq, entry) { + if (mb->context != MOUSEBIND_CTX_WIN) + continue; + + switch(mb->button) { + case 1: + button = Button1; + break; + case 2: + button = Button2; + break; + case 3: + button = Button3; + break; + default: + warnx("strange button in mousebinding\n"); + } + xu_btn_grab(cc->pwin, mb->modmask, button); + } +}