Commit Diff


commit - 7d0dbb314f77b79bb729162a59a6ea3d93807eb9
commit + 60efa1d2b90cbcfedcd93a988834fc595a5368bb
blob - 83f3e1b40105dafe831779d26198cbe93bb7a018
blob + 48c1282918a408cef198f897216cf3bb5f5dcb1c
--- src/libdraw/x11-wsys.c
+++ src/libdraw/x11-wsys.c
@@ -10,9 +10,17 @@ drawtopwindow(void)
 {
 	XMapRaised(_x.display, _x.drawable);
 	XFlush(_x.display);
-	XSetInputFocus(_x.display, _x.drawable, RevertToPointerRoot,
+	/*
+	 * Should not be using kbdcon since we're not running
+	 * in the kbdproc, but this is necessary to make the keyboard
+	 * take focus if the window is hidden when drawtopwindow
+	 * is called.  Let's hope that XSetInputFocus is only a write 
+	 * on the fd, and so it's okay to do even though the kbdproc
+	 * is reading at the same time.
+	 */
+	XSetInputFocus(_x.kbdcon, _x.drawable, RevertToPointerRoot,
 		CurrentTime);
-	XFlush(_x.display);
+	XFlush(_x.kbdcon);
 }
 
 void