Apply root window coordinate optimizations to crossing events as well
* src/xterm.c (xi_compute_root_window_offset_enter): New function. (handle_one_xevent): Apply root window crossing optimizations to XI_Enter and XI_Leave events too. Not strictly necessary but since we apply them to motion events it would be consistent to apply them to crossing events as well as recommended by the ICCCM.
This commit is contained in:
parent
9f32e6dea1
commit
5f7d9a1a9f
1 changed files with 30 additions and 0 deletions
30
src/xterm.c
30
src/xterm.c
|
@ -13584,6 +13584,13 @@ xi_compute_root_window_offset (struct frame *f, XIDeviceEvent *xev)
|
|||
xev->event_x, xev->event_y);
|
||||
}
|
||||
|
||||
static void
|
||||
xi_compute_root_window_offset_enter (struct frame *f, XIEnterEvent *enter)
|
||||
{
|
||||
x_compute_root_window_offset (f, enter->root_x, enter->root_y,
|
||||
enter->event_x, enter->event_y);
|
||||
}
|
||||
|
||||
#ifdef HAVE_XINPUT2_4
|
||||
|
||||
static void
|
||||
|
@ -19495,6 +19502,16 @@ handle_one_xevent (struct x_display_info *dpyinfo,
|
|||
|
||||
f = any;
|
||||
|
||||
if (f && event->xcrossing.window == FRAME_X_WINDOW (f))
|
||||
x_compute_root_window_offset (f, event->xcrossing.x_root,
|
||||
event->xcrossing.y_root,
|
||||
event->xcrossing.x,
|
||||
event->xcrossing.y);
|
||||
|
||||
/* The code below relies on the first several fields of
|
||||
XCrossingEvent being laid out the same way as
|
||||
XMotionEvent. */
|
||||
|
||||
if (f && x_mouse_click_focus_ignore_position)
|
||||
{
|
||||
ignore_next_mouse_click_timeout = (event->xmotion.time
|
||||
|
@ -19639,6 +19656,13 @@ handle_one_xevent (struct x_display_info *dpyinfo,
|
|||
|| EQ (track_mouse, Qdropping))
|
||||
&& gui_mouse_grabbed (dpyinfo)))
|
||||
do_help = -1;
|
||||
|
||||
if (event->xcrossing.window == FRAME_X_WINDOW (f))
|
||||
x_compute_root_window_offset (f, event->xcrossing.x_root,
|
||||
event->xcrossing.y_root,
|
||||
event->xcrossing.x,
|
||||
event->xcrossing.y);
|
||||
|
||||
}
|
||||
#ifdef USE_GTK
|
||||
/* See comment in EnterNotify above */
|
||||
|
@ -21049,6 +21073,9 @@ handle_one_xevent (struct x_display_info *dpyinfo,
|
|||
|
||||
f = any;
|
||||
|
||||
if (f && enter->event == FRAME_X_WINDOW (f))
|
||||
xi_compute_root_window_offset_enter (f, enter);
|
||||
|
||||
if (f && x_mouse_click_focus_ignore_position)
|
||||
{
|
||||
ignore_next_mouse_click_timeout = (enter->time
|
||||
|
@ -21245,6 +21272,9 @@ handle_one_xevent (struct x_display_info *dpyinfo,
|
|||
|| EQ (track_mouse, Qdropping))
|
||||
&& gui_mouse_grabbed (dpyinfo)))
|
||||
do_help = -1;
|
||||
|
||||
if (f && leave->event == FRAME_X_WINDOW (f))
|
||||
xi_compute_root_window_offset_enter (f, leave);
|
||||
}
|
||||
#ifdef USE_GTK
|
||||
/* See comment in EnterNotify above */
|
||||
|
|
Loading…
Add table
Reference in a new issue