]> code.delx.au - gnu-emacs/commitdiff
Fix bug #11720 with cursor positioning in outline-mode and Org buffers.
authorEli Zaretskii <eliz@gnu.org>
Sat, 16 Jun 2012 11:47:44 +0000 (14:47 +0300)
committerEli Zaretskii <eliz@gnu.org>
Sat, 16 Jun 2012 11:47:44 +0000 (14:47 +0300)
 src/xdisp.c (set_cursor_from_row): Use the leftmost glyph as GLYPH_BEFORE, not
 the rightmost.

src/ChangeLog
src/xdisp.c

index 3f73b1ad70256128e8a1640cb112c662a164a276..61a2b3d78f379500e38cb46f2320ace482b1c2d2 100644 (file)
@@ -6,6 +6,8 @@
        row.
        (handle_face_prop): Use chunk-relative overlay string index when
        indexing into it->string_overlays array.  (Bug#11653)
+       (set_cursor_from_row): Use the leftmost glyph as GLYPH_BEFORE, not
+       the rightmost.  (Bug#11720)
 
 2012-06-16  Andreas Schwab  <schwab@linux-m68k.org>
 
index aa130c5d50a099b5cc6226ff6ba34ec1733964ff..04baeea9706b3f64b0369dea6bc36fda50dafff8 100644 (file)
@@ -13937,16 +13937,13 @@ set_cursor_from_row (struct window *w, struct glyph_row *row,
                    break;
                  }
                /* See if we've found a better approximation to
-                  POS_BEFORE or to POS_AFTER.  Note that we want the
-                  first (leftmost) glyph of all those that are the
-                  closest from below, and the last (rightmost) of all
-                  those from above.  */
+                  POS_BEFORE or to POS_AFTER.  */
                if (0 > dpos && dpos > pos_before - pt_old)
                  {
                    pos_before = glyph->charpos;
                    glyph_before = glyph;
                  }
-               else if (0 < dpos && dpos <= pos_after - pt_old)
+               else if (0 < dpos && dpos < pos_after - pt_old)
                  {
                    pos_after = glyph->charpos;
                    glyph_after = glyph;
@@ -14030,7 +14027,7 @@ set_cursor_from_row (struct window *w, struct glyph_row *row,
                    pos_before = glyph->charpos;
                    glyph_before = glyph;
                  }
-               else if (0 < dpos && dpos <= pos_after - pt_old)
+               else if (0 < dpos && dpos < pos_after - pt_old)
                  {
                    pos_after = glyph->charpos;
                    glyph_after = glyph;