Commit Diff


commit - 7168d85f97abe826e2ba72ef5f3d32d9d4e30cdf
commit + 32173a11b434cb381dc30e7db1f83bb9c6032eca
blob - ebc99622e5a30f404a30e1e002e85645ed3c3fea
blob + c4ff67c104d83cfdb22388c85f9dfd563478efeb
--- st.c
+++ st.c
@@ -2602,9 +2602,11 @@ xseturgency(int add) {
 void
 focus(XEvent *ev) {
 	if(ev->type == FocusIn) {
+		XSetICFocus(xw.xic);
 		xw.state |= WIN_FOCUSED;
 		xseturgency(0);
 	} else {
+		XUnsetICFocus(xw.xic);
 		xw.state &= ~WIN_FOCUSED;
 	}
 }
@@ -2774,7 +2776,7 @@ run(void) {
 
 		while(XPending(xw.dpy)) {
 			XNextEvent(xw.dpy, &ev);
-			if(XFilterEvent(&ev, xw.win))
+			if(XFilterEvent(&ev, None))
 				continue;
 			if(handler[ev.type])
 				(handler[ev.type])(&ev);
@@ -2849,6 +2851,7 @@ main(int argc, char *argv[]) {
 
 run:
 	setlocale(LC_CTYPE, "");
+	XSetLocaleModifiers("");
 	tnew(80, 24);
 	xinit();
 	ttynew();