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
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
|| 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 */
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
|| 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 */