From 9657664c7bd1b6fe61bf0605a8503569ec79e10e Mon Sep 17 00:00:00 2001 From: oga Date: Tue, 17 Jun 2008 20:21:17 +0000 Subject: The mousebinding code missing a break once it had found the correct binding, this expose another issue that's still being debugged. Issue pointed out by Dan Harnett, thanks! While i'm here KNF and rework the logic to not be ass-backwards. ok okan. --- xevents.c | 33 +++++++++++++++++---------------- 1 file changed, 17 insertions(+), 16 deletions(-) (limited to 'xevents.c') diff --git a/xevents.c b/xevents.c index e70d218..b529580 100644 --- a/xevents.c +++ b/xevents.c @@ -220,32 +220,33 @@ xev_handle_leavenotify(struct xevent *xev, XEvent *ee) void xev_handle_buttonpress(struct xevent *xev, XEvent *ee) { - XButtonEvent *e = &ee->xbutton; - struct client_ctx *cc; - struct screen_ctx *sc = screen_fromroot(e->root); - char *wname; - struct mousebinding *mb; + XButtonEvent *e = &ee->xbutton; + struct client_ctx *cc; + struct screen_ctx *sc = screen_fromroot(e->root); + struct mousebinding *mb; + char *wname; cc = client_find(e->window); - if (sc->rootwin == e->window) + if (e->window == sc->rootwin) { TAILQ_FOREACH(mb, &Conf.mousebindingq, entry) { - if(e->button!=mb->button || e->state!=mb->modmask || - mb->context!=MOUSEBIND_CTX_ROOT) - continue; - (*mb->callback)(cc, e); + if (e->button == mb->button && e->state == mb->modmask + && mb->context == MOUSEBIND_CTX_ROOT) { + (*mb->callback)(cc, e); + break; + } } + } if (cc == NULL || e->state == 0) goto out; TAILQ_FOREACH(mb, &Conf.mousebindingq, entry) { - if(e->button!=mb->button || e->state!=mb->modmask || - mb->context!=MOUSEBIND_CTX_WIN) - continue; - - (*mb->callback)(cc, NULL); - break; + if (e->button == mb->button && e->state == mb->modmask && + mb->context == MOUSEBIND_CTX_ROOT) { + (*mb->callback)(cc, NULL); + break; + } } out: xev_register(xev); -- cgit 1.4.1