]> git.eshelyaron.com Git - emacs.git/commitdiff
Start fixing cursor positioning in bidi buffers with display properties.
authorEli Zaretskii <eliz@gnu.org>
Sun, 25 Apr 2010 19:33:31 +0000 (22:33 +0300)
committerEli Zaretskii <eliz@gnu.org>
Sun, 25 Apr 2010 19:33:31 +0000 (22:33 +0300)
 xdisp.c (set_cursor_from_row): Don't return zero if cursor was
 found by `cursor' property of a display string.
 (display_line): Preserve overlay and string info in row->end.

src/ChangeLog
src/xdisp.c

index 58fdad2d1d28bb7a80a9b99209fde15be377248c..9cabe8de38b5353e7cbaa81fb5213300f2b6c3b1 100644 (file)
@@ -1,3 +1,9 @@
+2010-04-25  Eli Zaretskii  <eliz@gnu.org>
+
+       * xdisp.c (set_cursor_from_row): Don't return zero if cursor was
+       found by `cursor' property of a display string.
+       (display_line): Preserve overlay and string info in row->end.
+
 2010-04-25  Eli Zaretskii  <eliz@gnu.org>
 
        * xdisp.c (display_line): Fix crash with bidi display on the last
index 4834b61a62618bed2823a2778d277469c4114465..d491d5a9aebc21bf4b99d6f0d519e50f26fd7b62 100644 (file)
@@ -13055,7 +13055,8 @@ set_cursor_from_row (w, row, matrix, delta, delta_bytes, dy, dvpos)
 
          /* If we reached the end of the line, and END was from a string,
             the cursor is not on this line.  */
-         if (glyph == end
+         if (cursor == NULL
+             && glyph == end
              && STRINGP ((glyph - incr)->object)
              && row->continued_p)
            return 0;
@@ -17969,7 +17970,6 @@ display_line (it)
         in the logical order, unless we are at ZV.  */
       if (row->ends_at_zv_p)
        {
-         row_end = row->end = it->current;
          if (!row->used[TEXT_AREA])
            {
              row->start.pos.charpos = row_end.pos.charpos;
@@ -18019,6 +18019,9 @@ display_line (it)
              it->eol_pos.charpos = it->eol_pos.bytepos = 0;
            }
          *it = save_it;
+         row_end.string_pos = it->current.string_pos;
+         row_end.overlay_string_index = it->current.overlay_string_index;
+         row_end.dpvec_index = it->current.dpvec_index;
          row->end = row_end;
        }
     }