aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorGerd Moellmann2000-09-21 18:41:36 +0000
committerGerd Moellmann2000-09-21 18:41:36 +0000
commitbfdcafe17b68b9398d73839d6a911626680f1b71 (patch)
tree01ecd305ae13a2b0097b4967124ad2e3daab1c0a /src
parente33455ca6af51849bd385331488892e9b268c6a8 (diff)
downloademacs-bfdcafe17b68b9398d73839d6a911626680f1b71.tar.gz
emacs-bfdcafe17b68b9398d73839d6a911626680f1b71.zip
(scrolling_window): Compare y-positions of rows
equal at the start. Some simplification.
Diffstat (limited to 'src')
-rw-r--r--src/dispnew.c31
1 files changed, 17 insertions, 14 deletions
diff --git a/src/dispnew.c b/src/dispnew.c
index 947227b8a08..2a486240dce 100644
--- a/src/dispnew.c
+++ b/src/dispnew.c
@@ -3812,7 +3812,7 @@ update_window (w, force_p)
3812 while (row < end && !row->enabled_p) 3812 while (row < end && !row->enabled_p)
3813 ++row; 3813 ++row;
3814 3814
3815 /* Try reusing part of the display by inserting/deleting lines. */ 3815 /* Try reusing part of the display by copying. */
3816 if (row < end && !desired_matrix->no_scrolling_p) 3816 if (row < end && !desired_matrix->no_scrolling_p)
3817 { 3817 {
3818 int rc = scrolling_window (w, header_line_row != NULL); 3818 int rc = scrolling_window (w, header_line_row != NULL);
@@ -4423,20 +4423,23 @@ scrolling_window (w, header_line_p)
4423 struct row_entry *entry; 4423 struct row_entry *entry;
4424 4424
4425 /* Skip over rows equal at the start. */ 4425 /* Skip over rows equal at the start. */
4426 i = header_line_p ? 1 : 0; 4426 for (i = header_line_p ? 1 : 0; i < current_matrix->nrows - 1; ++i)
4427 while (i < current_matrix->nrows - 1
4428 && MATRIX_ROW_ENABLED_P (current_matrix, i)
4429 && MATRIX_ROW_ENABLED_P (desired_matrix, i)
4430 && MATRIX_ROW_BOTTOM_Y (MATRIX_ROW (desired_matrix, i)) <= yb
4431 && MATRIX_ROW_BOTTOM_Y (MATRIX_ROW (current_matrix, i)) <= yb
4432 && row_equal_p (w,
4433 MATRIX_ROW (desired_matrix, i),
4434 MATRIX_ROW (current_matrix, i), 1))
4435 { 4427 {
4436 assign_row (MATRIX_ROW (current_matrix, i), 4428 struct glyph_row *d = MATRIX_ROW (desired_matrix, i);
4437 MATRIX_ROW (desired_matrix, i)); 4429 struct glyph_row *c = MATRIX_ROW (current_matrix, i);
4438 MATRIX_ROW (desired_matrix, i)->enabled_p = 0; 4430
4439 ++i; 4431 if (c->enabled_p
4432 && d->enabled_p
4433 && c->y == d->y
4434 && MATRIX_ROW_BOTTOM_Y (c) <= yb
4435 && MATRIX_ROW_BOTTOM_Y (d) <= yb
4436 && row_equal_p (w, c, d, 1))
4437 {
4438 assign_row (c, d);
4439 d->enabled_p = 0;
4440 }
4441 else
4442 break;
4440 } 4443 }
4441 4444
4442 /* Give up if some rows in the desired matrix are not enabled. */ 4445 /* Give up if some rows in the desired matrix are not enabled. */