changeset 30381:ace34a073127

(IT_note_mouse_highlight): Process overlays in the correct order of priority. If help echo was found in an overlay, use that overlay as the object in which the help echo was found.
author Eli Zaretskii <eliz@gnu.org>
date Sun, 23 Jul 2000 13:03:16 +0000
parents 4c605d08a747
children 3b1a105448c6
files src/msdos.c
diffstat 1 files changed, 8 insertions(+), 4 deletions(-) [+]
line wrap: on
line diff
--- a/src/msdos.c	Sun Jul 23 12:59:00 2000 +0000
+++ b/src/msdos.c	Sun Jul 23 13:03:16 2000 +0000
@@ -1537,6 +1537,7 @@
 	    noverlays = overlays_at (pos, 0, &overlay_vec, &len, NULL, NULL);
 	  }
 	  
+	/* Sort overlays into increasing priority order.  */
 	noverlays = sort_overlays (overlay_vec, noverlays, w);
 
 	/* Check mouse-face highlighting.  */
@@ -1554,7 +1555,7 @@
 
 	    /* Find highest priority overlay that has a mouse-face prop.  */
 	    overlay = Qnil;
-	    for (i = 0; i < noverlays; i++)
+	    for (i = noverlays - 1; i >= 0; --i)
 	      {
 		mouse_face = Foverlay_get (overlay_vec[i], Qmouse_face);
 		if (!NILP (mouse_face))
@@ -1638,14 +1639,17 @@
 
 	  /* Check overlays first.  */
 	  help = Qnil;
-	  for (i = 0; i < noverlays && NILP (help); ++i)
-	    help = Foverlay_get (overlay_vec[i], Qhelp_echo); 
+	  for (i = noverlays - 1; i >= 0 && NILP (help); --i)
+	    {
+	      overlay = overlay_vec[i];
+	      help = Foverlay_get (overlay, Qhelp_echo);
+	    }
 	    
 	  if (!NILP (help))
 	    {
 	      help_echo = help;
 	      help_echo_window = window;
-	      help_echo_object = w->buffer;
+	      help_echo_object = overlay;
 	      help_echo_pos = pos;
 	    }
 	  /* Try text properties.  */