]> git.eshelyaron.com Git - emacs.git/commit
Improve X event timestamp tracking
authorDaniel Colascione <dancol@dancol.org>
Sun, 7 Aug 2022 03:42:36 +0000 (23:42 -0400)
committerDaniel Colascione <dancol@dancol.org>
Sun, 7 Aug 2022 03:44:07 +0000 (23:44 -0400)
commit4b98a79a508ebdc719abfcf51ee6de32e46d0e1c
tree7580788968b149de63378447c91afeb88405f2cb
parent02ee0254873d4c102728c942dc9659f942c5cfa6
Improve X event timestamp tracking

Fix two problems with our handling of X timestamps

1) We're not properly updating the X interaction timestamp after
receiving certain input events, and

2) X events sent in response to emacsclient commands get stale
timestamps because the timestamp tracking doesn't take into account
that interactions with the user can occur outside the X input
event channel.

* src/xterm.c:
(x_display_set_last_user_time_1): New function.
(x_display_set_last_user_time): Call it.
(x_ewmh_activate_frame): Refactor.
(x_focus_frame): Don't call XSetInputFocus if we can use EWMH activation.
(server_timestamp_predicate): New function.
(x_get_server_time): New function.
(x_note_oob_interaction): New function.
(x_create_terminal): Register new function as terminal hook.

* src/termhooks.h: New hook: note_oob_interaction_hook.

* src/gtkutil.h:
(xg_set_user_timestamp): Declare.

* src/gtkutil.c:
(xg_set_user_timestamp): New function.

* src/frame.c:
(Fframe_note_oob_interaction): New function.
(syms_of_frame): Register it.

* lisp/server.el:
(server-switch-buffer): Call frame-note-oob-interaction when user
requests frame be raised.
lisp/server.el
src/frame.c
src/gtkutil.c
src/gtkutil.h
src/termhooks.h
src/xterm.c