diff options
| author | Richard M. Stallman | 2003-04-30 12:03:53 +0000 |
|---|---|---|
| committer | Richard M. Stallman | 2003-04-30 12:03:53 +0000 |
| commit | ccbb9ed2e0673e4e69761abc32ceb973a1d3645e (patch) | |
| tree | dac256c888c7968b319e60a45288e3b7a4435085 | |
| parent | 167899c437fa059886c387fc05ffb6d4b2e83c2e (diff) | |
| download | emacs-ccbb9ed2e0673e4e69761abc32ceb973a1d3645e.tar.gz emacs-ccbb9ed2e0673e4e69761abc32ceb973a1d3645e.zip | |
(move_it_vertically_backward): Do the final big else even if nlines is 0.
(redisplay_internal): Finish the per-frame loop
even if redisplay is suspended by input.
| -rw-r--r-- | src/xdisp.c | 14 |
1 files changed, 10 insertions, 4 deletions
diff --git a/src/xdisp.c b/src/xdisp.c index 7c9a52cbba7..18e57edb28f 100644 --- a/src/xdisp.c +++ b/src/xdisp.c | |||
| @@ -5823,10 +5823,14 @@ move_it_vertically_backward (it, dy) | |||
| 5823 | 5823 | ||
| 5824 | move_it_to (&it2, start_pos, -1, -1, -1, MOVE_TO_POS); | 5824 | move_it_to (&it2, start_pos, -1, -1, -1, MOVE_TO_POS); |
| 5825 | xassert (IT_CHARPOS (*it) >= BEGV); | 5825 | xassert (IT_CHARPOS (*it) >= BEGV); |
| 5826 | /* H is the actual vertical distance from the position in *IT | ||
| 5827 | and the starting position. */ | ||
| 5826 | h = it2.current_y - it->current_y; | 5828 | h = it2.current_y - it->current_y; |
| 5829 | /* NLINES is the distance in number of lines. */ | ||
| 5827 | nlines = it2.vpos - it->vpos; | 5830 | nlines = it2.vpos - it->vpos; |
| 5828 | 5831 | ||
| 5829 | /* Correct IT's y and vpos position. */ | 5832 | /* Correct IT's y and vpos position |
| 5833 | so that they are relative to the starting point. */ | ||
| 5830 | it->vpos -= nlines; | 5834 | it->vpos -= nlines; |
| 5831 | it->current_y -= h; | 5835 | it->current_y -= h; |
| 5832 | 5836 | ||
| @@ -5838,10 +5842,10 @@ move_it_vertically_backward (it, dy) | |||
| 5838 | move_it_by_lines (it, nlines, 1); | 5842 | move_it_by_lines (it, nlines, 1); |
| 5839 | xassert (IT_CHARPOS (*it) <= start_pos); | 5843 | xassert (IT_CHARPOS (*it) <= start_pos); |
| 5840 | } | 5844 | } |
| 5841 | else if (nlines) | 5845 | else |
| 5842 | { | 5846 | { |
| 5843 | /* The y-position we try to reach. Note that h has been | 5847 | /* The y-position we try to reach, relative to *IT. |
| 5844 | subtracted in front of the if-statement. */ | 5848 | Note that H has been subtracted in front of the if-statement. */ |
| 5845 | int target_y = it->current_y + h - dy; | 5849 | int target_y = it->current_y + h - dy; |
| 5846 | int y0 = it3.current_y; | 5850 | int y0 = it3.current_y; |
| 5847 | int y1 = line_bottom_y (&it3); | 5851 | int y1 = line_bottom_y (&it3); |
| @@ -9999,8 +10003,10 @@ redisplay_internal (preserve_echo_area) | |||
| 9999 | /* Update the display. */ | 10003 | /* Update the display. */ |
| 10000 | set_window_update_flags (XWINDOW (f->root_window), 1); | 10004 | set_window_update_flags (XWINDOW (f->root_window), 1); |
| 10001 | pause |= update_frame (f, 0, 0); | 10005 | pause |= update_frame (f, 0, 0); |
| 10006 | #if 0 /* Exiting the loop can leave the wrong value for buffer_shared. */ | ||
| 10002 | if (pause) | 10007 | if (pause) |
| 10003 | break; | 10008 | break; |
| 10009 | #endif | ||
| 10004 | 10010 | ||
| 10005 | if (n == size) | 10011 | if (n == size) |
| 10006 | { | 10012 | { |