summary refs log tree commit diff
path: root/xevents.c
diff options
context:
space:
mode:
authorokan <okan>2013-12-12 20:15:07 +0000
committerokan <okan>2013-12-12 20:15:07 +0000
commitb276a2ef00a3333e0d474ad960c0e2b16880904d (patch)
treeb3e1b5f66735ecf4b7d6e70981064d59210f3f41 /xevents.c
parente767ac9c6556d04c346b89e8d47d721c38cc366e (diff)
downloadcwm-b276a2ef00a3333e0d474ad960c0e2b16880904d.tar.gz
cwm-b276a2ef00a3333e0d474ad960c0e2b16880904d.tar.xz
cwm-b276a2ef00a3333e0d474ad960c0e2b16880904d.zip
ICCCM explicitly states that server time (CurrentTime) should *not* be
used for focus events, but rather the timestamp of the generated event.
Track the last event timestamp and send it down for a WM_TAKE_FOCUS
ClientMessage.  I suspect we should do this for clients that don't
announce this Atom as well, though the raciness gets us into a bind.

Solves focus order issue since WM_TAKE_FOCUS; fix verified by sthen@

ok sthen@
Diffstat (limited to 'xevents.c')
-rw-r--r--xevents.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/xevents.c b/xevents.c
index 60944d7..e2065ba 100644
--- a/xevents.c
+++ b/xevents.c
@@ -212,6 +212,8 @@ xev_handle_enternotify(XEvent *ee)
 	XCrossingEvent		*e = &ee->xcrossing;
 	struct client_ctx	*cc;
 
+	Last_Event_Time = e->time;
+
 	if ((cc = client_find(e->window)) != NULL)
 		client_setactive(cc);
 }