From 5a0e425ef7a6420297d12dfe69f6a99d307f5984 Mon Sep 17 00:00:00 2001 From: okan Date: Thu, 12 Dec 2013 20:15:07 +0000 Subject: 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@ --- calmwm.h | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) (limited to 'calmwm.h') diff --git a/calmwm.h b/calmwm.h index 8ce7bdc..c479077 100644 --- a/calmwm.h +++ b/calmwm.h @@ -15,7 +15,7 @@ * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. * - * $OpenBSD: calmwm.h,v 1.233 2013/12/11 15:41:11 okan Exp $ + * $OpenBSD: calmwm.h,v 1.234 2013/12/12 20:15:07 okan Exp $ */ #ifndef _CALMWM_H_ @@ -316,6 +316,7 @@ struct mwm_hints { #define MWM_DECOR_BORDER (1<<1) extern Display *X_Dpy; +extern Time Last_Event_Time; extern struct screen_ctx_q Screenq; extern struct client_ctx_q Clientq; extern struct conf Conf; @@ -381,7 +382,7 @@ void client_htile(struct client_ctx *); void client_lower(struct client_ctx *); void client_map(struct client_ctx *); void client_maximize(struct client_ctx *); -void client_msg(struct client_ctx *, Atom); +void client_msg(struct client_ctx *, Atom, Time); void client_move(struct client_ctx *); struct client_ctx *client_init(Window, struct screen_ctx *, int); void client_ptrsave(struct client_ctx *); -- cgit v1.2.3-2-gb3c3