tseems to correct lack of focus when coming back from being hidden. not strictly correct in multithreaded programs but let's see if anything breaks. - plan9port - [fork] Plan 9 from user space (HTM) git clone git://src.adamsgaard.dk/plan9port (DIR) Log (DIR) Files (DIR) Refs (DIR) README (DIR) LICENSE --- (DIR) commit 60efa1d2b90cbcfedcd93a988834fc595a5368bb (DIR) parent 7d0dbb314f77b79bb729162a59a6ea3d93807eb9 (HTM) Author: rsc <devnull@localhost> Date: Fri, 7 Jan 2005 18:44:21 +0000 seems to correct lack of focus when coming back from being hidden. not strictly correct in multithreaded programs but let's see if anything breaks. Diffstat: M src/libdraw/x11-wsys.c | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) --- (DIR) diff --git a/src/libdraw/x11-wsys.c b/src/libdraw/x11-wsys.c t@@ -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