summary refs log tree commit diff
path: root/xevents.c
diff options
context:
space:
mode:
authoroga <oga>2008-06-17 20:55:48 +0000
committeroga <oga>2008-06-17 20:55:48 +0000
commit19ba704ee3b16bcf4a29c223c5796a7f63fa6b6d (patch)
treedc0247b66da25e8bcce16150dccfacf8fcc1a8bc /xevents.c
parent9657664c7bd1b6fe61bf0605a8503569ec79e10e (diff)
downloadcwm-19ba704ee3b16bcf4a29c223c5796a7f63fa6b6d.tar.gz
cwm-19ba704ee3b16bcf4a29c223c5796a7f63fa6b6d.tar.xz
cwm-19ba704ee3b16bcf4a29c223c5796a7f63fa6b6d.zip
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.
Diffstat (limited to 'xevents.c')
-rw-r--r--xevents.c28
1 files changed, 13 insertions, 15 deletions
diff --git a/xevents.c b/xevents.c
index b529580..dc3ac87 100644
--- a/xevents.c
+++ b/xevents.c
@@ -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);
 }