summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorGerd Moellmann <gerd@gnu.org>2001-10-17 15:29:12 +0000
committerGerd Moellmann <gerd@gnu.org>2001-10-17 15:29:12 +0000
commit23e8bd8665b9f024438f6cd5a915482b285e4010 (patch)
treea2435337eefb68033b2840f25adeef563f838834 /src
parent9c6ba6d10c11eca11586e8fb3841435fc9a61dc9 (diff)
downloademacs-23e8bd8665b9f024438f6cd5a915482b285e4010.tar.gz
(try_window_id): Undo last change. Give up if
window ends in strings.
Diffstat (limited to 'src')
-rw-r--r--src/ChangeLog5
-rw-r--r--src/xdisp.c48
2 files changed, 28 insertions, 25 deletions
diff --git a/src/ChangeLog b/src/ChangeLog
index 67bf8de2fb5..cfb78753687 100644
--- a/src/ChangeLog
+++ b/src/ChangeLog
@@ -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.
diff --git a/src/xdisp.c b/src/xdisp.c
index f1d1f792685..69fd0c73c6c 100644
--- a/src/xdisp.c
+++ b/src/xdisp.c
@@ -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));