Mercurial > emacs
changeset 53605:7dfd96e25ec6
(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.
author | Kim F. Storm <storm@cua.dk> |
---|---|
date | Fri, 16 Jan 2004 18:46:11 +0000 |
parents | 59115f5809c3 |
children | 96c29ac603e8 |
files | src/dispnew.c |
diffstat | 1 files changed, 19 insertions(+), 12 deletions(-) [+] |
line wrap: on
line diff
--- a/src/dispnew.c Fri Jan 16 18:40:46 2004 +0000 +++ b/src/dispnew.c Fri Jan 16 18:46:11 2004 +0000 @@ -1513,12 +1513,11 @@ return 0; } - if (a->truncated_on_left_p != b->truncated_on_left_p - || a->fill_line_p != b->fill_line_p - || a->truncated_on_right_p != b->truncated_on_right_p - || a->overlay_arrow_p != b->overlay_arrow_p - || a->continued_p != b->continued_p - || a->indicate_empty_line_p != b->indicate_empty_line_p + if (a->fill_line_p != b->fill_line_p + || a->cursor_in_fringe_p != b->cursor_in_fringe_p + || a->left_fringe_bitmap != b->left_fringe_bitmap + || a->right_fringe_bitmap != b->right_fringe_bitmap + || a->exact_window_width_line_p != b->exact_window_width_line_p || a->overlapped_p != b->overlapped_p || (MATRIX_ROW_CONTINUATION_LINE_P (a) != MATRIX_ROW_CONTINUATION_LINE_P (b)) @@ -3450,6 +3449,7 @@ /* Can't do it in a continued line because continuation lines would change. */ (glyph_row->continued_p + || glyph_row->exact_window_width_line_p /* Can't use this method if the line overlaps others or is overlapped by others because these other lines would have to be redisplayed. */ @@ -3655,6 +3655,8 @@ cursor_to (y, x); } + update_window_fringes (w, 0); + if (rif) rif->update_window_end_hook (w, 1, 0); update_end (f); @@ -4192,6 +4194,8 @@ strcpy (w->current_matrix->method, w->desired_matrix->method); #endif + update_window_fringes (w, 0); + /* End the update of window W. Don't set the cursor if we paused updating the display because in this case, set_window_cursor_after_update hasn't been called, and @@ -4510,13 +4514,10 @@ if (!current_row->enabled_p || desired_row->y != current_row->y || desired_row->visible_height != current_row->visible_height - || desired_row->overlay_arrow_p != current_row->overlay_arrow_p - || desired_row->truncated_on_left_p != current_row->truncated_on_left_p - || desired_row->truncated_on_right_p != current_row->truncated_on_right_p - || desired_row->continued_p != current_row->continued_p + || desired_row->cursor_in_fringe_p != current_row->cursor_in_fringe_p + || current_row->redraw_fringe_bitmaps_p || desired_row->mode_line_p != current_row->mode_line_p - || (desired_row->indicate_empty_line_p - != current_row->indicate_empty_line_p) + || desired_row->exact_window_width_line_p != current_row->exact_window_width_line_p || (MATRIX_ROW_CONTINUATION_LINE_P (desired_row) != MATRIX_ROW_CONTINUATION_LINE_P (current_row))) rif->after_update_window_line_hook (desired_row); @@ -4769,6 +4770,7 @@ if (c->enabled_p && d->enabled_p + && !d->redraw_fringe_bitmaps_p && c->y == d->y && MATRIX_ROW_BOTTOM_Y (c) <= yb && MATRIX_ROW_BOTTOM_Y (d) <= yb @@ -4824,6 +4826,7 @@ && MATRIX_ROW (current_matrix, i - 1)->enabled_p && (MATRIX_ROW (current_matrix, i - 1)->y == MATRIX_ROW (desired_matrix, j - 1)->y) + && !MATRIX_ROW (desired_matrix, j - 1)->redraw_fringe_bitmaps_p && row_equal_p (w, MATRIX_ROW (desired_matrix, i - 1), MATRIX_ROW (current_matrix, j - 1), 1)) @@ -5016,6 +5019,10 @@ to = MATRIX_ROW (current_matrix, r->desired_vpos + j); from = MATRIX_ROW (desired_matrix, r->desired_vpos + j); to_overlapped_p = to->overlapped_p; + if (!from->mode_line_p && !w->pseudo_window_p + && (to->left_fringe_bitmap != from->left_fringe_bitmap + || to->right_fringe_bitmap != from->right_fringe_bitmap)) + from->redraw_fringe_bitmaps_p = 1; assign_row (to, from); to->enabled_p = 1, from->enabled_p = 0; to->overlapped_p = to_overlapped_p;