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@.
This commit is contained in:
oga 2008-06-25 22:37:29 +00:00
parent 77058c59e2
commit 2dfd021f8b
3 changed files with 32 additions and 2 deletions

View File

@ -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 *);

View File

@ -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.

30
conf.c
View File

@ -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);
}
}