mirror of
https://git.savannah.gnu.org/git/emacs.git
synced 2024-12-29 11:02:01 +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:
parent
e7b348b08a
commit
edffda8609
23
src/xterm.c
23
src/xterm.c
@ -17316,6 +17316,10 @@ handle_one_xevent (struct x_display_info *dpyinfo,
|
|||||||
union buffered_input_event inev;
|
union buffered_input_event inev;
|
||||||
int count = 0;
|
int count = 0;
|
||||||
int do_help = 0;
|
int do_help = 0;
|
||||||
|
#ifdef HAVE_XINPUT2
|
||||||
|
struct xi_device_t *gen_help_device;
|
||||||
|
Time gen_help_time;
|
||||||
|
#endif
|
||||||
ptrdiff_t nbytes = 0;
|
ptrdiff_t nbytes = 0;
|
||||||
struct frame *any, *f = NULL;
|
struct frame *any, *f = NULL;
|
||||||
Mouse_HLInfo *hlinfo = &dpyinfo->mouse_highlight;
|
Mouse_HLInfo *hlinfo = &dpyinfo->mouse_highlight;
|
||||||
@ -17345,6 +17349,9 @@ handle_one_xevent (struct x_display_info *dpyinfo,
|
|||||||
EVENT_INIT (inev.ie);
|
EVENT_INIT (inev.ie);
|
||||||
inev.ie.kind = NO_EVENT;
|
inev.ie.kind = NO_EVENT;
|
||||||
inev.ie.arg = Qnil;
|
inev.ie.arg = Qnil;
|
||||||
|
#ifdef HAVE_XINPUT2
|
||||||
|
gen_help_device = NULL;
|
||||||
|
#endif
|
||||||
|
|
||||||
/* Ignore events coming from various extensions, such as XFIXES and
|
/* Ignore events coming from various extensions, such as XFIXES and
|
||||||
XKB. */
|
XKB. */
|
||||||
@ -21270,7 +21277,15 @@ handle_one_xevent (struct x_display_info *dpyinfo,
|
|||||||
has changed, generate a HELP_EVENT. */
|
has changed, generate a HELP_EVENT. */
|
||||||
if (!NILP (help_echo_string)
|
if (!NILP (help_echo_string)
|
||||||
|| !NILP (previous_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;
|
goto XI_OTHER;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -23207,6 +23222,12 @@ handle_one_xevent (struct x_display_info *dpyinfo,
|
|||||||
if (do_help > 0)
|
if (do_help > 0)
|
||||||
{
|
{
|
||||||
any_help_event_p = true;
|
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,
|
gen_help_event (help_echo_string, frame, help_echo_window,
|
||||||
help_echo_object, help_echo_pos);
|
help_echo_object, help_echo_pos);
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user