changeset 40001:f835259b6cec

(try_window_id): Undo last change. Give up if window ends in strings.
author Gerd Moellmann <gerd@gnu.org>
date Wed, 17 Oct 2001 15:26:44 +0000
parents 79aa94c4266e
children 1a9af1030414
files src/xdisp.c
diffstat 1 files changed, 25 insertions(+), 25 deletions(-) [+]
line wrap: on
line diff
--- a/src/xdisp.c	Wed Oct 17 14:05:34 2001 +0000
+++ b/src/xdisp.c	Wed Oct 17 15:26:44 2001 +0000
@@ -11476,6 +11476,12 @@
   if (!TEXT_POS_EQUAL_P (start, row->start.pos))
     GIVE_UP (16);
 
+  /* Give up if the window ends in strings.  Overlay strings
+     at the end are difficult to handle, so don't try.  */
+  row = MATRIX_ROW (current_matrix, XFASTINT (w->window_end_vpos));
+  if (MATRIX_ROW_START_CHARPOS (row) == MATRIX_ROW_END_CHARPOS (row))
+    GIVE_UP (20);
+
   /* Compute the position at which we have to start displaying new
      lines.  Some of the lines at the top of the window might be
      reusable because they are not displaying changed text.  Find the
@@ -11565,7 +11571,7 @@
 	}
     }
   else if (last_unchanged_at_beg_row == NULL)
-    GIVE_UP (18);
+    GIVE_UP (19);
 
 
 #if GLYPH_DEBUG
@@ -11827,29 +11833,23 @@
 	  ++last_row;
 	}
 
-      if (IT_CHARPOS (it) < ZV)
-	{
-	  /* Otherwise, the rest of the window after the window
-	     end was blank, and scrolling didn't change that.  */
-
-	  /* We may start in a continuation line.  If so, we have to
-	     get the right continuation_lines_width and current_x.  */
-	  it.continuation_lines_width = last_row->continuation_lines_width;
-	  it.hpos = it.current_x = 0;
-
-	  /* Display the rest of the lines at the window end.  */
-	  it.glyph_row = MATRIX_ROW (desired_matrix, it.vpos);
-	  while (it.current_y < it.last_visible_y
-		 && !fonts_changed_p)
-	    {
-	      /* Is it always sure that the display agrees with lines in
-		 the current matrix?  I don't think so, so we mark rows
-		 displayed invalid in the current matrix by setting their
-		 enabled_p flag to zero.  */
-	      MATRIX_ROW (w->current_matrix, it.vpos)->enabled_p = 0;
-	      if (display_line (&it))
-		last_text_row_at_end = it.glyph_row - 1;
-	    }
+      /* We may start in a continuation line.  If so, we have to
+	 get the right continuation_lines_width and current_x.  */
+      it.continuation_lines_width = last_row->continuation_lines_width;
+      it.hpos = it.current_x = 0;
+      
+      /* Display the rest of the lines at the window end.  */
+      it.glyph_row = MATRIX_ROW (desired_matrix, it.vpos);
+      while (it.current_y < it.last_visible_y
+	     && !fonts_changed_p)
+	{
+	  /* Is it always sure that the display agrees with lines in
+	     the current matrix?  I don't think so, so we mark rows
+	     displayed invalid in the current matrix by setting their
+	     enabled_p flag to zero.  */
+	  MATRIX_ROW (w->current_matrix, it.vpos)->enabled_p = 0;
+	  if (display_line (&it))
+	    last_text_row_at_end = it.glyph_row - 1;
 	}
     }
 
@@ -11940,7 +11940,7 @@
 			    XFASTINT (w->window_end_vpos) + 1,
 			    bottom_vpos, 0);
 #endif
-  
+
   IF_DEBUG (debug_end_pos = XFASTINT (w->window_end_pos);
 	    debug_end_vpos = XFASTINT (w->window_end_vpos));