changeset 66074:870f6c72cfc4

(note_mouse_movement): Return 1 if mouse moved; 0 otherwise. (handle_one_xevent): Only clear help_echo_string; restore it if note_mouse_movement didn't record any mouse movement.
author Kim F. Storm <storm@cua.dk>
date Thu, 13 Oct 2005 22:41:21 +0000
parents 17431e3efe9d
children 1f435e64880f
files src/xterm.c
diffstat 1 files changed, 10 insertions(+), 6 deletions(-) [+]
line wrap: on
line diff
--- a/src/xterm.c	Thu Oct 13 22:39:06 2005 +0000
+++ b/src/xterm.c	Thu Oct 13 22:41:21 2005 +0000
@@ -3582,7 +3582,7 @@
 static XMotionEvent last_mouse_motion_event;
 static Lisp_Object last_mouse_motion_frame;
 
-static void
+static int
 note_mouse_movement (frame, event)
      FRAME_PTR frame;
      XMotionEvent *event;
@@ -3596,10 +3596,11 @@
       frame->mouse_moved = 1;
       last_mouse_scroll_bar = Qnil;
       note_mouse_highlight (frame, -1, -1);
+      return 1;
     }
 
   /* Has the mouse moved off the glyph it was on at the last sighting?  */
-  else if (event->x < last_mouse_glyph.x
+  if (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)
@@ -3609,7 +3610,10 @@
       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);
-    }
+      return 1;
+    }
+
+  return 0;
 }
 
 
@@ -6483,8 +6487,7 @@
     case MotionNotify:
       {
         previous_help_echo_string = help_echo_string;
-        help_echo_string = help_echo_object = help_echo_window = Qnil;
-        help_echo_pos = -1;
+        help_echo_string = Qnil;
 
         if (dpyinfo->grabbed && last_mouse_frame
             && FRAME_LIVE_P (last_mouse_frame))
@@ -6523,7 +6526,8 @@
 
                 last_window=window;
               }
-            note_mouse_movement (f, &event.xmotion);
+            if (!note_mouse_movement (f, &event.xmotion))
+	      help_echo_string = previous_help_echo_string;
           }
         else
           {