about summary refs log tree commit diff
path: root/xevents.c
diff options
context:
space:
mode:
authorokan <okan>2013-05-23 16:52:39 +0000
committerokan <okan>2013-05-23 16:52:39 +0000
commitbe1a7a3f5c7c0777ba86d40c49425e97fbae62a1 (patch)
tree6caf5a6701ccfa50641a56cd616770e993ffa822 /xevents.c
parent7cc1c7344fe74b91e528ea6792318d7af0d833ef (diff)
downloadcwm-be1a7a3f5c7c0777ba86d40c49425e97fbae62a1.tar.gz
cwm-be1a7a3f5c7c0777ba86d40c49425e97fbae62a1.tar.xz
cwm-be1a7a3f5c7c0777ba86d40c49425e97fbae62a1.zip
alter conf_grab(_kbd) to first ungrab AnyKey/AnyModifier, then proceed
to grab keys in keybindingq.  we don't need to ungrab/grab on every
addition to the queue, just once with a complete keybindingq; simplify
grabbing keys per screen (during init) and during a MappingNotify.

while here, change conf_grab_{kbd,mouse} to require only a Window.
Diffstat (limited to 'xevents.c')
-rw-r--r--xevents.c12
1 files changed, 5 insertions, 7 deletions
diff --git a/xevents.c b/xevents.c
index 1c6ffaf..0a8dc9a 100644
--- a/xevents.c
+++ b/xevents.c
@@ -389,15 +389,13 @@ static void
 xev_handle_mappingnotify(XEvent *ee)
 {
 	XMappingEvent		*e = &ee->xmapping;
-	struct keybinding	*kb;
-
-	TAILQ_FOREACH(kb, &Conf.keybindingq, entry)
-		conf_ungrab(&Conf, kb);
+	struct screen_ctx	*sc;
 
 	XRefreshKeyboardMapping(e);
-
-	TAILQ_FOREACH(kb, &Conf.keybindingq, entry)
-		conf_grab(&Conf, kb);
+	if (e->request == MappingKeyboard) {
+		TAILQ_FOREACH(sc, &Screenq, entry)
+			conf_grab_kbd(sc->rootwin);
+	}
 }
 
 static void