diff options
| author | Gerd Moellmann | 2000-09-21 18:41:36 +0000 |
|---|---|---|
| committer | Gerd Moellmann | 2000-09-21 18:41:36 +0000 |
| commit | bfdcafe17b68b9398d73839d6a911626680f1b71 (patch) | |
| tree | 01ecd305ae13a2b0097b4967124ad2e3daab1c0a /src | |
| parent | e33455ca6af51849bd385331488892e9b268c6a8 (diff) | |
| download | emacs-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.c | 31 |
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. */ |