]> git.eshelyaron.com Git - emacs.git/commitdiff
Tested with L2R rows and mouse highlight on a single line.
authorEli Zaretskii <eliz@gnu.org>
Sat, 23 Oct 2010 12:28:28 +0000 (14:28 +0200)
committerEli Zaretskii <eliz@gnu.org>
Sat, 23 Oct 2010 12:28:28 +0000 (14:28 +0200)
 xdisp.c (mouse_face_from_string_pos): Initialize the `found'
 flag to zero, and exit the outer loop when it's non-zero.  Bail
 our early if no row in the window belongs to the highlighted
 string.  Always back up after exiting the second loop.

src/ChangeLog
src/xdisp.c

index 04861f7708237136afadc1a4e5ddf8a5cbc9004f..0cd77348d12397325c1ccea1ef7afa5bf57db367 100644 (file)
@@ -1,3 +1,10 @@
+2010-10-23  Eli Zaretskii  <eliz@gnu.org>
+
+       * xdisp.c (mouse_face_from_string_pos): Initialize the `found'
+       flag to zero, and exit the outer loop when it's non-zero.  Bail
+       our early if no row in the window belongs to the highlighted
+       string.  Always back up after exiting the second loop.
+
 2010-10-16  Eli Zaretskii  <eliz@gnu.org>
 
        * xdisp.c (fast_find_string_pos): #ifdef away, not used anymore.
index 9b58e70176dcacb022daa2c26a95968136a1116a..5a7ba32b6783223395d8dc41620b3af0c1a331f5 100644 (file)
@@ -24422,7 +24422,7 @@ mouse_face_from_string_pos (struct window *w, Display_Info *dpyinfo,
   struct glyph_row *r;
   struct glyph *g, *e;
   int gx;
-  int found;
+  int found = 0;
 
   /* Find the glyph row with at least one position in the range
      [STARTPOS..ENDPOS), and the leftmost glyph in that row whose
@@ -24451,10 +24451,16 @@ mouse_face_from_string_pos (struct window *w, Display_Info *dpyinfo,
                dpyinfo->mouse_face_end_col = g - r->glyphs[TEXT_AREA];
                dpyinfo->mouse_face_end_x = gx;
              }
+           found = 1;
            break;
          }
+      if (found)
+       break;
     }
 
+  if (!found)
+    return;
+
   /* Starting with the next row, look for the first row which does NOT
      include any glyphs whose positions are in the range.  */
   for (++r; r->enabled_p && r->y < yb; ++r)
@@ -24472,9 +24478,8 @@ mouse_face_from_string_pos (struct window *w, Display_Info *dpyinfo,
       if (!found)
        break;
     }
+  r--;
 
-  if (!found)
-    r--;
   dpyinfo->mouse_face_end_row = r - w->current_matrix->rows;
   dpyinfo->mouse_face_end_y = r->y;