diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/ChangeLog | 9 | ||||
| -rw-r--r-- | src/xdisp.c | 20 |
2 files changed, 28 insertions, 1 deletions
diff --git a/src/ChangeLog b/src/ChangeLog index 5131f666c6e..1a83531ad10 100644 --- a/src/ChangeLog +++ b/src/ChangeLog | |||
| @@ -1,3 +1,12 @@ | |||
| 1 | 2013-08-15 Eli Zaretskii <eliz@gnu.org> | ||
| 2 | |||
| 3 | * xdisp.c (compute_window_start_on_continuation_line): When | ||
| 4 | WORD_WRAP is in effect, use move_it_to instead of move_it_by_lines | ||
| 5 | to make sure we end up setting the window start at the leftmost | ||
| 6 | visible character of the display line. This avoids funky | ||
| 7 | horizontal shifting because the window start is not kept on the | ||
| 8 | same position. (Bug#15090) | ||
| 9 | |||
| 1 | 2013-08-15 Lars Magne Ingebrigtsen <larsi@gnus.org> | 10 | 2013-08-15 Lars Magne Ingebrigtsen <larsi@gnus.org> |
| 2 | 11 | ||
| 3 | * image.c (imagemagick_compute_animated_image): Implement animated | 12 | * image.c (imagemagick_compute_animated_image): Implement animated |
diff --git a/src/xdisp.c b/src/xdisp.c index 4d0b0ab9974..8b72c58cd07 100644 --- a/src/xdisp.c +++ b/src/xdisp.c | |||
| @@ -14912,7 +14912,25 @@ compute_window_start_on_continuation_line (struct window *w) | |||
| 14912 | { | 14912 | { |
| 14913 | min_distance = distance; | 14913 | min_distance = distance; |
| 14914 | pos = it.current.pos; | 14914 | pos = it.current.pos; |
| 14915 | move_it_by_lines (&it, 1); | 14915 | if (it.line_wrap == WORD_WRAP) |
| 14916 | { | ||
| 14917 | /* Under WORD_WRAP, move_it_by_lines is likely to | ||
| 14918 | overshoot and stop not at the first, but the | ||
| 14919 | second character from the left margin. So in | ||
| 14920 | that case, we need a more tight control on the X | ||
| 14921 | coordinate of the iterator than move_it_by_lines | ||
| 14922 | promises in its contract. The method is to first | ||
| 14923 | go to the last (rightmost) visible character of a | ||
| 14924 | line, then move to the leftmost character on the | ||
| 14925 | next line in a separate call. */ | ||
| 14926 | move_it_to (&it, ZV, it.last_visible_x, it.current_y, -1, | ||
| 14927 | MOVE_TO_POS | MOVE_TO_X | MOVE_TO_Y); | ||
| 14928 | move_it_to (&it, ZV, 0, | ||
| 14929 | it.current_y + it.max_ascent + it.max_descent, -1, | ||
| 14930 | MOVE_TO_POS | MOVE_TO_X | MOVE_TO_Y); | ||
| 14931 | } | ||
| 14932 | else | ||
| 14933 | move_it_by_lines (&it, 1); | ||
| 14916 | } | 14934 | } |
| 14917 | 14935 | ||
| 14918 | /* Set the window start there. */ | 14936 | /* Set the window start there. */ |