changeset 43343:ac7b0c0802cc

(x-autoselect-window): New variable. (note_mouse_movement): Use it.
author Pavel Janík <Pavel@Janik.cz>
date Sat, 16 Feb 2002 10:02:38 +0000
parents 54b7d7a369a0
children 7596a6f0e7b2
files src/xterm.c
diffstat 1 files changed, 29 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/src/xterm.c	Sat Feb 16 09:53:29 2002 +0000
+++ b/src/xterm.c	Sat Feb 16 10:02:38 2002 +0000
@@ -253,6 +253,10 @@
 
 static int any_help_event_p;
 
+/* Non-zero means autoselect window with the mouse cursor.  */
+
+int x_autoselect_window_p;
+
 /* Non-zero means draw block and hollow cursor as wide as the glyph
    under it.  For example, if a block cursor is over a tab, it will be
    drawn as wide as that tab on the display.  */
@@ -6643,6 +6647,26 @@
   last_mouse_motion_event = *event;
   XSETFRAME (last_mouse_motion_frame, frame);
 
+  if (x_autoselect_window_p)
+    {
+      int area;
+      Lisp_Object window;
+      static Lisp_Object last_window;
+
+      window = window_from_coordinates (frame, XINT (event->x), XINT (event->y), &area, 0);
+
+      /* Window will be selected only when it is not selected now and
+	 last mouse movement event was not in it.  Minubuffer window
+	 will be selected iff it is active.  */
+      if (!EQ (window, last_window)
+	  && !EQ (window, selected_window)
+	  && (!MINI_WINDOW_P (XWINDOW (window))
+	      || (EQ (window, minibuf_window) && minibuf_level > 0)))
+	Fselect_window (window);
+
+      last_window=window;
+    }
+
   if (event->window != FRAME_X_WINDOW (frame))
     {
       frame->mouse_moved = 1;
@@ -6664,7 +6688,7 @@
 
 /* This is used for debugging, to turn off note_mouse_highlight.  */
 
- int disable_mouse_highlight;
+int disable_mouse_highlight;
 
 
 
@@ -15041,6 +15065,10 @@
   staticpro (&previous_help_echo);
   help_echo_pos = -1;
 
+  DEFVAR_BOOL ("x-autoselect-window", &x_autoselect_window_p,
+    doc: /* *Non-nil means autoselect window with mouse pointer.  */);
+  x_autoselect_window_p = 0;
+
   DEFVAR_BOOL ("x-stretch-cursor", &x_stretch_cursor_p,
     doc: /* *Non-nil means draw block cursor as wide as the glyph under it.
 For example, if a block cursor is over a tab, it will be drawn as