changeset 50744:13cae05372c0

(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.
author Richard M. Stallman <rms@gnu.org>
date Wed, 30 Apr 2003 12:03:53 +0000
parents 03920300bdbf
children fedd03de0f46
files src/xdisp.c
diffstat 1 files changed, 11 insertions(+), 5 deletions(-) [+]
line wrap: on
line diff
--- a/src/xdisp.c	Wed Apr 30 09:23:02 2003 +0000
+++ b/src/xdisp.c	Wed Apr 30 12:03:53 2003 +0000
@@ -5823,10 +5823,14 @@
 
   move_it_to (&it2, start_pos, -1, -1, -1, MOVE_TO_POS);
   xassert (IT_CHARPOS (*it) >= BEGV);
+  /* H is the actual vertical distance from the position in *IT
+     and the starting position.  */
   h = it2.current_y - it->current_y;
+  /* NLINES is the distance in number of lines.  */
   nlines = it2.vpos - it->vpos;
 
-  /* Correct IT's y and vpos position.  */
+  /* Correct IT's y and vpos position
+     so that they are relative to the starting point.  */
   it->vpos -= nlines;
   it->current_y -= h;
 
@@ -5838,10 +5842,10 @@
 	move_it_by_lines (it, nlines, 1);
       xassert (IT_CHARPOS (*it) <= start_pos);
     }
-  else if (nlines)
-    {
-      /* The y-position we try to reach.  Note that h has been
-         subtracted in front of the if-statement.  */
+  else
+    {
+      /* The y-position we try to reach, relative to *IT.
+	 Note that H has been subtracted in front of the if-statement.  */
       int target_y = it->current_y + h - dy;
       int y0 = it3.current_y;
       int y1 = line_bottom_y (&it3);
@@ -9999,8 +10003,10 @@
 		  /* Update the display.  */
 		  set_window_update_flags (XWINDOW (f->root_window), 1);
 		  pause |= update_frame (f, 0, 0);
+#if 0  /* Exiting the loop can leave the wrong value for buffer_shared.  */
 		  if (pause)
 		    break;
+#endif
 
 		  if (n == size)
 		    {