diff options
| author | Kim F. Storm | 2004-01-16 18:46:11 +0000 |
|---|---|---|
| committer | Kim F. Storm | 2004-01-16 18:46:11 +0000 |
| commit | 60e992936ae72fa3f32c8549f74dde22fa0e4e37 (patch) | |
| tree | ed6dd86cdc712560bf2f933e818c406f79af3112 | |
| parent | 557c387e7084e57f0835e1caa00db99d7db9490b (diff) | |
| download | emacs-60e992936ae72fa3f32c8549f74dde22fa0e4e37.tar.gz emacs-60e992936ae72fa3f32c8549f74dde22fa0e4e37.zip | |
(row_equal_p, update_window_line): Compare fringe bitmaps
instead of related indicator fields.
Compare exact_window_width_line_p and cursor_in_mouse_face_p indicators.
(direct_output_for_insert): Handle exact width lines like
contined lines. Call update_window_fringes.
(update_window): Call update_window_fringes.
(scrolling_window): Don't skip desired rows with changed bitmaps.
Check if fringe bitmaps changes when assigning scrolled rows.
| -rw-r--r-- | src/dispnew.c | 31 |
1 files changed, 19 insertions, 12 deletions
diff --git a/src/dispnew.c b/src/dispnew.c index c65fefaa20c..0314e34ecb2 100644 --- a/src/dispnew.c +++ b/src/dispnew.c | |||
| @@ -1513,12 +1513,11 @@ row_equal_p (w, a, b, mouse_face_p) | |||
| 1513 | return 0; | 1513 | return 0; |
| 1514 | } | 1514 | } |
| 1515 | 1515 | ||
| 1516 | if (a->truncated_on_left_p != b->truncated_on_left_p | 1516 | if (a->fill_line_p != b->fill_line_p |
| 1517 | || a->fill_line_p != b->fill_line_p | 1517 | || a->cursor_in_fringe_p != b->cursor_in_fringe_p |
| 1518 | || a->truncated_on_right_p != b->truncated_on_right_p | 1518 | || a->left_fringe_bitmap != b->left_fringe_bitmap |
| 1519 | || a->overlay_arrow_p != b->overlay_arrow_p | 1519 | || a->right_fringe_bitmap != b->right_fringe_bitmap |
| 1520 | || a->continued_p != b->continued_p | 1520 | || a->exact_window_width_line_p != b->exact_window_width_line_p |
| 1521 | || a->indicate_empty_line_p != b->indicate_empty_line_p | ||
| 1522 | || a->overlapped_p != b->overlapped_p | 1521 | || a->overlapped_p != b->overlapped_p |
| 1523 | || (MATRIX_ROW_CONTINUATION_LINE_P (a) | 1522 | || (MATRIX_ROW_CONTINUATION_LINE_P (a) |
| 1524 | != MATRIX_ROW_CONTINUATION_LINE_P (b)) | 1523 | != MATRIX_ROW_CONTINUATION_LINE_P (b)) |
| @@ -3450,6 +3449,7 @@ direct_output_for_insert (g) | |||
| 3450 | /* Can't do it in a continued line because continuation | 3449 | /* Can't do it in a continued line because continuation |
| 3451 | lines would change. */ | 3450 | lines would change. */ |
| 3452 | (glyph_row->continued_p | 3451 | (glyph_row->continued_p |
| 3452 | || glyph_row->exact_window_width_line_p | ||
| 3453 | /* Can't use this method if the line overlaps others or is | 3453 | /* Can't use this method if the line overlaps others or is |
| 3454 | overlapped by others because these other lines would | 3454 | overlapped by others because these other lines would |
| 3455 | have to be redisplayed. */ | 3455 | have to be redisplayed. */ |
| @@ -3655,6 +3655,8 @@ direct_output_for_insert (g) | |||
| 3655 | cursor_to (y, x); | 3655 | cursor_to (y, x); |
| 3656 | } | 3656 | } |
| 3657 | 3657 | ||
| 3658 | update_window_fringes (w, 0); | ||
| 3659 | |||
| 3658 | if (rif) | 3660 | if (rif) |
| 3659 | rif->update_window_end_hook (w, 1, 0); | 3661 | rif->update_window_end_hook (w, 1, 0); |
| 3660 | update_end (f); | 3662 | update_end (f); |
| @@ -4192,6 +4194,8 @@ update_window (w, force_p) | |||
| 4192 | strcpy (w->current_matrix->method, w->desired_matrix->method); | 4194 | strcpy (w->current_matrix->method, w->desired_matrix->method); |
| 4193 | #endif | 4195 | #endif |
| 4194 | 4196 | ||
| 4197 | update_window_fringes (w, 0); | ||
| 4198 | |||
| 4195 | /* End the update of window W. Don't set the cursor if we | 4199 | /* End the update of window W. Don't set the cursor if we |
| 4196 | paused updating the display because in this case, | 4200 | paused updating the display because in this case, |
| 4197 | set_window_cursor_after_update hasn't been called, and | 4201 | set_window_cursor_after_update hasn't been called, and |
| @@ -4510,13 +4514,10 @@ update_window_line (w, vpos, mouse_face_overwritten_p) | |||
| 4510 | if (!current_row->enabled_p | 4514 | if (!current_row->enabled_p |
| 4511 | || desired_row->y != current_row->y | 4515 | || desired_row->y != current_row->y |
| 4512 | || desired_row->visible_height != current_row->visible_height | 4516 | || desired_row->visible_height != current_row->visible_height |
| 4513 | || desired_row->overlay_arrow_p != current_row->overlay_arrow_p | 4517 | || desired_row->cursor_in_fringe_p != current_row->cursor_in_fringe_p |
| 4514 | || desired_row->truncated_on_left_p != current_row->truncated_on_left_p | 4518 | || current_row->redraw_fringe_bitmaps_p |
| 4515 | || desired_row->truncated_on_right_p != current_row->truncated_on_right_p | ||
| 4516 | || desired_row->continued_p != current_row->continued_p | ||
| 4517 | || desired_row->mode_line_p != current_row->mode_line_p | 4519 | || desired_row->mode_line_p != current_row->mode_line_p |
| 4518 | || (desired_row->indicate_empty_line_p | 4520 | || desired_row->exact_window_width_line_p != current_row->exact_window_width_line_p |
| 4519 | != current_row->indicate_empty_line_p) | ||
| 4520 | || (MATRIX_ROW_CONTINUATION_LINE_P (desired_row) | 4521 | || (MATRIX_ROW_CONTINUATION_LINE_P (desired_row) |
| 4521 | != MATRIX_ROW_CONTINUATION_LINE_P (current_row))) | 4522 | != MATRIX_ROW_CONTINUATION_LINE_P (current_row))) |
| 4522 | rif->after_update_window_line_hook (desired_row); | 4523 | rif->after_update_window_line_hook (desired_row); |
| @@ -4769,6 +4770,7 @@ scrolling_window (w, header_line_p) | |||
| 4769 | 4770 | ||
| 4770 | if (c->enabled_p | 4771 | if (c->enabled_p |
| 4771 | && d->enabled_p | 4772 | && d->enabled_p |
| 4773 | && !d->redraw_fringe_bitmaps_p | ||
| 4772 | && c->y == d->y | 4774 | && c->y == d->y |
| 4773 | && MATRIX_ROW_BOTTOM_Y (c) <= yb | 4775 | && MATRIX_ROW_BOTTOM_Y (c) <= yb |
| 4774 | && MATRIX_ROW_BOTTOM_Y (d) <= yb | 4776 | && MATRIX_ROW_BOTTOM_Y (d) <= yb |
| @@ -4824,6 +4826,7 @@ scrolling_window (w, header_line_p) | |||
| 4824 | && MATRIX_ROW (current_matrix, i - 1)->enabled_p | 4826 | && MATRIX_ROW (current_matrix, i - 1)->enabled_p |
| 4825 | && (MATRIX_ROW (current_matrix, i - 1)->y | 4827 | && (MATRIX_ROW (current_matrix, i - 1)->y |
| 4826 | == MATRIX_ROW (desired_matrix, j - 1)->y) | 4828 | == MATRIX_ROW (desired_matrix, j - 1)->y) |
| 4829 | && !MATRIX_ROW (desired_matrix, j - 1)->redraw_fringe_bitmaps_p | ||
| 4827 | && row_equal_p (w, | 4830 | && row_equal_p (w, |
| 4828 | MATRIX_ROW (desired_matrix, i - 1), | 4831 | MATRIX_ROW (desired_matrix, i - 1), |
| 4829 | MATRIX_ROW (current_matrix, j - 1), 1)) | 4832 | MATRIX_ROW (current_matrix, j - 1), 1)) |
| @@ -5016,6 +5019,10 @@ scrolling_window (w, header_line_p) | |||
| 5016 | to = MATRIX_ROW (current_matrix, r->desired_vpos + j); | 5019 | to = MATRIX_ROW (current_matrix, r->desired_vpos + j); |
| 5017 | from = MATRIX_ROW (desired_matrix, r->desired_vpos + j); | 5020 | from = MATRIX_ROW (desired_matrix, r->desired_vpos + j); |
| 5018 | to_overlapped_p = to->overlapped_p; | 5021 | to_overlapped_p = to->overlapped_p; |
| 5022 | if (!from->mode_line_p && !w->pseudo_window_p | ||
| 5023 | && (to->left_fringe_bitmap != from->left_fringe_bitmap | ||
| 5024 | || to->right_fringe_bitmap != from->right_fringe_bitmap)) | ||
| 5025 | from->redraw_fringe_bitmaps_p = 1; | ||
| 5019 | assign_row (to, from); | 5026 | assign_row (to, from); |
| 5020 | to->enabled_p = 1, from->enabled_p = 0; | 5027 | to->enabled_p = 1, from->enabled_p = 0; |
| 5021 | to->overlapped_p = to_overlapped_p; | 5028 | to->overlapped_p = to_overlapped_p; |