diff options
author | Owain Ainsworth <oga@cvs.openbsd.org> | 2008-06-17 20:55:49 +0000 |
---|---|---|
committer | Owain Ainsworth <oga@cvs.openbsd.org> | 2008-06-17 20:55:49 +0000 |
commit | d84a87fe78ad7743e069c9b04cf542b35ea43d4c (patch) | |
tree | 45f208b6d08db99409aed0c8ead6f23b4c8a630b | |
parent | 717d05ed829b4c3fcdf8c9dc7d078b1da694f40a (diff) |
Just rework the mouse binding calculation on event to look like the
kbfunc one. Makes the code a lot easier to read.
Fixes a bug i introduced in the last commit here.
ok okan.
-rw-r--r-- | app/cwm/xevents.c | 30 |
1 files changed, 14 insertions, 16 deletions
diff --git a/app/cwm/xevents.c b/app/cwm/xevents.c index abdc2b8ea..299993d4e 100644 --- a/app/cwm/xevents.c +++ b/app/cwm/xevents.c @@ -15,7 +15,7 @@ * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. * - * $Id: xevents.c,v 1.21 2008/06/17 20:21:17 oga Exp $ + * $Id: xevents.c,v 1.22 2008/06/17 20:55:48 oga Exp $ */ /* @@ -228,26 +228,24 @@ xev_handle_buttonpress(struct xevent *xev, XEvent *ee) cc = client_find(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) { - (*mb->callback)(cc, e); - break; - } - } + TAILQ_FOREACH(mb, &Conf.mousebindingq, entry) { + if (e->button == mb->button && e->state == mb->modmask) + break; } - if (cc == NULL || e->state == 0) + if (mb == NULL) goto out; - TAILQ_FOREACH(mb, &Conf.mousebindingq, entry) { - if (e->button == mb->button && e->state == mb->modmask && - mb->context == MOUSEBIND_CTX_ROOT) { - (*mb->callback)(cc, NULL); - break; - } + if (mb->context == MOUSEBIND_CTX_ROOT) { + if (e->window != sc->rootwin) + goto out; + } else if (mb->context == MOUSEBIND_CTX_WIN) { + cc = client_find(e->window); + if (cc == NULL) + goto out; } + + (*mb->callback)(cc, e); out: xev_register(xev); } |