changeset 66396:afc5a296f79d

Undo 2005-10-23 change. (last_mouse_glyph_frame): New var. (note_mouse_movement): Say mouse moved if current frame differs from last_mouse_glyph_frame, and update last_mouse_glyph_frame. (XTmouse_position): Set last_mouse_glyph_frame. (handle_one_xevent): Clear last_mouse_glyph_frame [instead of last_mouse_glyph] on mouse up/down event.
author Kim F. Storm <storm@cua.dk>
date Mon, 24 Oct 2005 14:59:42 +0000
parents d47fc05e98ec
children 768dad162d9e
files src/xterm.c
diffstat 1 files changed, 8 insertions(+), 3 deletions(-) [+]
line wrap: on
line diff
--- a/src/xterm.c	Mon Oct 24 14:59:29 2005 +0000
+++ b/src/xterm.c	Mon Oct 24 14:59:42 2005 +0000
@@ -249,6 +249,7 @@
 /* Where the mouse was last time we reported a mouse event.  */
 
 static XRectangle last_mouse_glyph;
+static FRAME_PTR last_mouse_glyph_frame;
 static Lisp_Object last_mouse_press_frame;
 
 /* The scroll bar in which the last X motion event occurred.
@@ -3596,21 +3597,24 @@
       frame->mouse_moved = 1;
       last_mouse_scroll_bar = Qnil;
       note_mouse_highlight (frame, -1, -1);
+      last_mouse_glyph_frame = 0;
       return 1;
     }
 
-  note_mouse_highlight (frame, event->x, event->y);
 
   /* Has the mouse moved off the glyph it was on at the last sighting?  */
-  if (event->x < last_mouse_glyph.x
+  if (frame != last_mouse_glyph_frame
+      || event->x < last_mouse_glyph.x
       || event->x >= last_mouse_glyph.x + last_mouse_glyph.width
       || event->y < last_mouse_glyph.y
       || event->y >= last_mouse_glyph.y + last_mouse_glyph.height)
     {
       frame->mouse_moved = 1;
       last_mouse_scroll_bar = Qnil;
+      note_mouse_highlight (frame, event->x, event->y);
       /* Remember which glyph we're now on.  */
       remember_mouse_glyph (frame, event->x, event->y, &last_mouse_glyph);
+      last_mouse_glyph_frame = frame;
       return 1;
     }
 
@@ -3821,6 +3825,7 @@
 	       the frame are divided into.  */
 
 	    remember_mouse_glyph (f1, win_x, win_y, &last_mouse_glyph);
+	    last_mouse_glyph_frame = f1;
 
 	    *bar_window = Qnil;
 	    *part = 0;
@@ -6658,7 +6663,7 @@
         int tool_bar_p = 0;
 
         bzero (&compose_status, sizeof (compose_status));
-	bzero (&last_mouse_glyph, sizeof (last_mouse_glyph));
+	last_mouse_glyph_frame = 0;
 
         if (dpyinfo->grabbed
             && last_mouse_frame