aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKim F. Storm2004-01-16 18:46:11 +0000
committerKim F. Storm2004-01-16 18:46:11 +0000
commit60e992936ae72fa3f32c8549f74dde22fa0e4e37 (patch)
treeed6dd86cdc712560bf2f933e818c406f79af3112
parent557c387e7084e57f0835e1caa00db99d7db9490b (diff)
downloademacs-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.c31
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;