- if (!note_mouse_movement (emacsframe, last_mouse_motion_position.x,
- last_mouse_motion_position.y))
+ if (!NILP (Vmouse_autoselect_window))
+ {
+ NSTRACE (mouse_autoselect_window);
+ static Lisp_Object last_mouse_window;
+ Lisp_Object window
+ = window_from_coordinates (emacsframe, pt.x, pt.y, 0, 0);
+
+ if (WINDOWP (window)
+ && !EQ (window, last_mouse_window)
+ && !EQ (window, selected_window)
+ && (focus_follows_mouse
+ || (EQ (XWINDOW (window)->frame,
+ XWINDOW (selected_window)->frame))))
+ {
+ NSTRACE (in_window);
+ emacs_event->kind = SELECT_WINDOW_EVENT;
+ emacs_event->frame_or_window = window;
+ EV_TRAILER2 (e);
+ }
+ /* Remember the last window where we saw the mouse. */
+ last_mouse_window = window;
+ }
+
+ if (!note_mouse_movement (emacsframe, pt.x, pt.y))