diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/ChangeLog | 6 | ||||
| -rw-r--r-- | src/xdisp.c | 18 |
2 files changed, 18 insertions, 6 deletions
diff --git a/src/ChangeLog b/src/ChangeLog index 081a6b8631c..1422f6b1f68 100644 --- a/src/ChangeLog +++ b/src/ChangeLog | |||
| @@ -1,3 +1,9 @@ | |||
| 1 | 2013-12-14 Eli Zaretskii <eliz@gnu.org> | ||
| 2 | |||
| 3 | * xdisp.c (Fmove_point_visually): Expect overshoot in move_it_to | ||
| 4 | when character at point is displayed from a display vector. | ||
| 5 | (Bug#16148) | ||
| 6 | |||
| 1 | 2013-12-14 Teodor Zlatanov <tzz@lifelogs.com> | 7 | 2013-12-14 Teodor Zlatanov <tzz@lifelogs.com> |
| 2 | 8 | ||
| 3 | * gnutls.c: Replace `:verify_hostname_error' with `:verify_error', | 9 | * gnutls.c: Replace `:verify_hostname_error' with `:verify_error', |
diff --git a/src/xdisp.c b/src/xdisp.c index 6daa9131154..3974810908a 100644 --- a/src/xdisp.c +++ b/src/xdisp.c | |||
| @@ -20505,11 +20505,12 @@ Value is the new character position of point. */) | |||
| 20505 | SET_TEXT_POS (pt, PT, PT_BYTE); | 20505 | SET_TEXT_POS (pt, PT, PT_BYTE); |
| 20506 | start_display (&it, w, pt); | 20506 | start_display (&it, w, pt); |
| 20507 | 20507 | ||
| 20508 | if (it.cmp_it.id < 0 | 20508 | if ((it.cmp_it.id < 0 |
| 20509 | && it.method == GET_FROM_STRING | 20509 | && it.method == GET_FROM_STRING |
| 20510 | && it.area == TEXT_AREA | 20510 | && it.area == TEXT_AREA |
| 20511 | && it.string_from_display_prop_p | 20511 | && it.string_from_display_prop_p |
| 20512 | && (it.sp > 0 && it.stack[it.sp - 1].method == GET_FROM_BUFFER)) | 20512 | && (it.sp > 0 && it.stack[it.sp - 1].method == GET_FROM_BUFFER)) |
| 20513 | || it.method == GET_FROM_DISPLAY_VECTOR) | ||
| 20513 | overshoot_expected = true; | 20514 | overshoot_expected = true; |
| 20514 | 20515 | ||
| 20515 | /* Find the X coordinate of point. We start from the beginning | 20516 | /* Find the X coordinate of point. We start from the beginning |
| @@ -20553,7 +20554,12 @@ Value is the new character position of point. */) | |||
| 20553 | glyph to the left of point, so we need to correct the X | 20554 | glyph to the left of point, so we need to correct the X |
| 20554 | coordinate. */ | 20555 | coordinate. */ |
| 20555 | if (overshoot_expected) | 20556 | if (overshoot_expected) |
| 20556 | pt_x += pixel_width; | 20557 | { |
| 20558 | if (it.bidi_p) | ||
| 20559 | pt_x += pixel_width * it.bidi_it.scan_dir; | ||
| 20560 | else | ||
| 20561 | pt_x += pixel_width; | ||
| 20562 | } | ||
| 20557 | 20563 | ||
| 20558 | /* Compute target X coordinate, either to the left or to the | 20564 | /* Compute target X coordinate, either to the left or to the |
| 20559 | right of point. On TTY frames, all characters have the same | 20565 | right of point. On TTY frames, all characters have the same |