mirror of
git://git.sv.gnu.org/emacs.git
synced 2025-12-26 23:31:55 -08:00
(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.
This commit is contained in:
parent
557c387e70
commit
60e992936a
1 changed files with 19 additions and 12 deletions
|
|
@ -1513,12 +1513,11 @@ row_equal_p (w, a, b, mouse_face_p)
|
|||
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 @@ direct_output_for_insert (g)
|
|||
/* 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 @@ direct_output_for_insert (g)
|
|||
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 @@ update_window (w, force_p)
|
|||
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 @@ update_window_line (w, vpos, mouse_face_overwritten_p)
|
|||
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 @@ scrolling_window (w, header_line_p)
|
|||
|
||||
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 @@ scrolling_window (w, header_line_p)
|
|||
&& 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 @@ scrolling_window (w, header_line_p)
|
|||
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;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue