]> git.eshelyaron.com Git - emacs.git/commitdiff
(try_window_id): Undo last change. Give up if
authorGerd Moellmann <gerd@gnu.org>
Wed, 17 Oct 2001 15:29:12 +0000 (15:29 +0000)
committerGerd Moellmann <gerd@gnu.org>
Wed, 17 Oct 2001 15:29:12 +0000 (15:29 +0000)
window ends in strings.

src/ChangeLog
src/xdisp.c

index 67bf8de2fb539d04e45dfdd34c9f48e676d4a74f..cfb787536875511ddfdd854dd0b3b0534d593d43 100644 (file)
@@ -1,9 +1,12 @@
 2001-10-17  Gerd Moellmann  <gerd@gnu.org>
 
+       * xdisp.c (try_window_id): Undo last change.  Give up if
+       window ends in strings.
+       
        * xdisp.c (try_window_id): Don't display lines after the window
        end if the rest of the window after the window end was already
        blank.
-       
+
        * xdisp.c (try_window_id): Remove code that was only there 
        for the release of 21.1.
 
index f1d1f7926851866783a6152cacfb219e7f637128..69fd0c73c6c4bd9b329420e2932021d31f537e50 100644 (file)
@@ -11476,6 +11476,12 @@ try_window_id (w)
   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 @@ try_window_id (w)
        }
     }
   else if (last_unchanged_at_beg_row == NULL)
-    GIVE_UP (18);
+    GIVE_UP (19);
 
 
 #if GLYPH_DEBUG
@@ -11827,29 +11833,23 @@ try_window_id (w)
          ++last_row;
        }
 
-      if (IT_CHARPOS (it) < ZV)
+      /* 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)
        {
-         /* 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;
-           }
+         /* 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 @@ try_window_id (w)
                            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));