1
0
mirror of https://git.savannah.gnu.org/git/emacs.git synced 2024-12-28 10:56:36 +00:00

Adjust client pointer upon help event

* src/xterm.c (handle_one_xevent): Keep track of the device that
set do_help and make it the client pointer so that tooltips show
up under the right pointer.
This commit is contained in:
Po Lu 2022-08-11 09:56:15 +08:00
parent e7b348b08a
commit edffda8609

View File

@ -17316,6 +17316,10 @@ handle_one_xevent (struct x_display_info *dpyinfo,
union buffered_input_event inev;
int count = 0;
int do_help = 0;
#ifdef HAVE_XINPUT2
struct xi_device_t *gen_help_device;
Time gen_help_time;
#endif
ptrdiff_t nbytes = 0;
struct frame *any, *f = NULL;
Mouse_HLInfo *hlinfo = &dpyinfo->mouse_highlight;
@ -17345,6 +17349,9 @@ handle_one_xevent (struct x_display_info *dpyinfo,
EVENT_INIT (inev.ie);
inev.ie.kind = NO_EVENT;
inev.ie.arg = Qnil;
#ifdef HAVE_XINPUT2
gen_help_device = NULL;
#endif
/* Ignore events coming from various extensions, such as XFIXES and
XKB. */
@ -21270,7 +21277,15 @@ handle_one_xevent (struct x_display_info *dpyinfo,
has changed, generate a HELP_EVENT. */
if (!NILP (help_echo_string)
|| !NILP (previous_help_echo_string))
do_help = 1;
{
/* Also allow the focus and client pointer to be
adjusted accordingly, in case a help tooltip is
shown. */
gen_help_device = device;
gen_help_time = xev->time;
do_help = 1;
}
goto XI_OTHER;
}
@ -23207,6 +23222,12 @@ handle_one_xevent (struct x_display_info *dpyinfo,
if (do_help > 0)
{
any_help_event_p = true;
#ifdef HAVE_XINPUT2
if (gen_help_device)
xi_handle_interaction (dpyinfo, f,
gen_help_device,
gen_help_time);
#endif
gen_help_event (help_echo_string, frame, help_echo_window,
help_echo_object, help_echo_pos);
}