]> git.eshelyaron.com Git - emacs.git/commitdiff
Fix bug #9524 with cursor positioning on display strings in truncated lines.
authorEli Zaretskii <eliz@gnu.org>
Sat, 17 Sep 2011 08:09:45 +0000 (11:09 +0300)
committerEli Zaretskii <eliz@gnu.org>
Sat, 17 Sep 2011 08:09:45 +0000 (11:09 +0300)
 src/xdisp.c (set_cursor_from_row): Don't invoke special treatment of
 truncated lines if point is covered by a display string.

src/ChangeLog
src/xdisp.c

index 27b7e709317e0151b0cc9fed290d9c7befaef8af..c6238701301e2444706bcdd56b922afdea53e912 100644 (file)
@@ -1,3 +1,8 @@
+2011-09-17  Eli Zaretskii  <eliz@gnu.org>
+
+       * xdisp.c (set_cursor_from_row): Don't invoke special treatment of
+       truncated lines if point is covered by a display string.  (Bug#9524)
+
 2011-09-16  Paul Eggert  <eggert@cs.ucla.edu>
 
        * xselect.c: Relax test for outgoing X longs (Bug#9498).
index 6ba92f3ed798318a1208f6899c4ae32ed3757645..864734d4b205702f962542f25c087ba29c3dce3d 100644 (file)
@@ -13637,15 +13637,17 @@ set_cursor_from_row (struct window *w, struct glyph_row *row,
               /* A truncated row may not include PT among its
                  character positions.  Setting the cursor inside the
                  scroll margin will trigger recalculation of hscroll
-                 in hscroll_window_tree.  */
-              || (row->truncated_on_left_p && pt_old < bpos_min)
-              || (row->truncated_on_right_p && pt_old > bpos_max)
-              /* Zero-width characters produce no glyphs.  */
+                 in hscroll_window_tree.  But if a display string
+                 covers point, defer to the string-handling code
+                 below to figure this out.  */
               || (!string_seen
-                  && !empty_line_p
-                  && (row->reversed_p
-                      ? glyph_after > glyphs_end
-                      : glyph_after < glyphs_end)))
+                  && ((row->truncated_on_left_p && pt_old < bpos_min)
+                      || (row->truncated_on_right_p && pt_old > bpos_max)
+                      /* Zero-width characters produce no glyphs.  */
+                      || (!empty_line_p
+                          && (row->reversed_p
+                              ? glyph_after > glyphs_end
+                              : glyph_after < glyphs_end)))))
        {
          cursor = glyph_after;
          x = -1;