diff src/msdos.c @ 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 2ad638704621
children 788ce16426e3
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.  */