aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPavel Janík <[email protected]>2002-02-16 10:02:38 +0000
committerPavel Janík <[email protected]>2002-02-16 10:02:38 +0000
commit503e457ee66a2d70ea4c3dfb5b60869894c1ffe1 (patch)
tree6f362cfa7ed5c3d1fe8e1de68a2eb4daad71ad21
parent5d2200aa40df1fde2907217493f51a23ed2649c9 (diff)
(x-autoselect-window): New variable.
(note_mouse_movement): Use it.
-rw-r--r--src/xterm.c30
1 files changed, 29 insertions, 1 deletions
diff --git a/src/xterm.c b/src/xterm.c
index e6382539c3..4de1f5fc72 100644
--- a/src/xterm.c
+++ b/src/xterm.c
@@ -253,6 +253,10 @@ static Lisp_Object previous_help_echo;
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 @@ note_mouse_movement (frame, event)
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 @@ note_mouse_movement (frame, event)
/* This is used for debugging, to turn off note_mouse_highlight. */
- int disable_mouse_highlight;
+int disable_mouse_highlight;
@@ -15041,6 +15065,10 @@ syms_of_xterm ()
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