changeset 37026:da4aab5d8b60

(try_window_reusing_current_matrix) <scrolling up>: Give up if matrix starts in an ellipsis. (init_from_display_pos): Do nothing if POS doesn't specify a dpvec_index but the iterator has such a position.
author Gerd Moellmann <gerd@gnu.org>
date Tue, 27 Mar 2001 18:01:59 +0000
parents 484cee0f302a
children 9de32dc27d45
files src/xdisp.c
diffstat 1 files changed, 8 insertions(+), 12 deletions(-) [+]
line wrap: on
line diff
--- a/src/xdisp.c	Tue Mar 27 16:52:09 2001 +0000
+++ b/src/xdisp.c	Tue Mar 27 18:01:59 2001 +0000
@@ -1871,18 +1871,6 @@
       xassert (it->dpvec && it->current.dpvec_index == 0);
       it->current.dpvec_index = pos->dpvec_index;
     }
-  else if (it->current.dpvec_index >= 0)
-    {
-      /* I don't think this can happen, just being paranoid...  */
-      it->dpvec = NULL;
-      it->current.dpvec_index = -1;
-      if (it->s)
-	it->method = next_element_from_c_string;
-      else if (STRINGP (it->string))
-	it->method = next_element_from_string;
-      else
-	it->method = next_element_from_buffer;
-    }
   
   CHECK_IT (it);
 }
@@ -10450,6 +10438,13 @@
     {
       int first_row_y;
       
+      /* Don't use this method if the display starts with an ellipsis
+	 displayed for invisible text.  It's not easy to handle that case
+	 below, and it's certainly not worth the effort since this is
+	 not a frequent case.  */
+      if (in_ellipses_for_invisible_text_p (&start_row->start, w))
+	return 0;
+
       IF_DEBUG (debug_method_add (w, "twu1"));
       
       /* Display up to a row that can be reused.  The variable
@@ -10649,6 +10644,7 @@
       /* Start displaying at the start of first_row_to_display.  */
       xassert (first_row_to_display->y < yb);
       init_to_row_start (&it, w, first_row_to_display);
+
       nrows_scrolled = (MATRIX_ROW_VPOS (first_reusable_row, w->current_matrix)
 			- start_vpos);
       it.vpos = (MATRIX_ROW_VPOS (first_row_to_display, w->current_matrix)