comparison src/dispnew.c @ 83019:82c3b4da43ca

Merged in changes from CVS HEAD Patches applied: * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-33 Update from CVS * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-34 Update from CVS * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-35 Update from CVS * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-36 Update from CVS * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-37 Update from CVS * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-38 Update from CVS * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-39 Update from CVS * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-40 Update from CVS * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-41 Make fringe-drawing stuff compile without a window-system * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-42 Update from CVS * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-43 Update from CVS * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-44 Update from CVS * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-45 Update from CVS * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-46 Update from CVS * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-47 Update from CVS * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-48 Update from CVS * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-49 Update from CVS * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-50 Update from CVS git-archimport-id: lorentey@elte.hu--2004/emacs--multi-tty--0--patch-59
author Karoly Lorentey <lorentey@elte.hu>
date Thu, 22 Jan 2004 15:37:19 +0000
parents f5cadabb36dd 2ddd2a0d047a
children 6ce586a7243e
comparison
equal deleted inserted replaced
83018:1465425fe2d3 83019:82c3b4da43ca
1 /* Updating of data structures for redisplay. 1 /* Updating of data structures for redisplay.
2 Copyright (C) 1985,86,87,88,93,94,95,97,98,1999,2000,01,02,2003 2 Copyright (C) 1985,86,87,88,93,94,95,97,98,1999,2000,01,02,03,04
3 Free Software Foundation, Inc. 3 Free Software Foundation, Inc.
4 4
5 This file is part of GNU Emacs. 5 This file is part of GNU Emacs.
6 6
7 GNU Emacs is free software; you can redistribute it and/or modify 7 GNU Emacs is free software; you can redistribute it and/or modify
1498 1498
1499 if (a_glyph != a_end) 1499 if (a_glyph != a_end)
1500 return 0; 1500 return 0;
1501 } 1501 }
1502 1502
1503 if (a->truncated_on_left_p != b->truncated_on_left_p 1503 if (a->fill_line_p != b->fill_line_p
1504 || a->fill_line_p != b->fill_line_p 1504 || a->cursor_in_fringe_p != b->cursor_in_fringe_p
1505 || a->truncated_on_right_p != b->truncated_on_right_p 1505 || a->left_fringe_bitmap != b->left_fringe_bitmap
1506 || a->overlay_arrow_p != b->overlay_arrow_p 1506 || a->right_fringe_bitmap != b->right_fringe_bitmap
1507 || a->continued_p != b->continued_p 1507 || a->exact_window_width_line_p != b->exact_window_width_line_p
1508 || a->indicate_empty_line_p != b->indicate_empty_line_p
1509 || a->overlapped_p != b->overlapped_p 1508 || a->overlapped_p != b->overlapped_p
1510 || (MATRIX_ROW_CONTINUATION_LINE_P (a) 1509 || (MATRIX_ROW_CONTINUATION_LINE_P (a)
1511 != MATRIX_ROW_CONTINUATION_LINE_P (b)) 1510 != MATRIX_ROW_CONTINUATION_LINE_P (b))
1512 /* Different partially visible characters on left margin. */ 1511 /* Different partially visible characters on left margin. */
1513 || a->x != b->x 1512 || a->x != b->x
3440 || !NILP (echo_area_buffer[1]) 3439 || !NILP (echo_area_buffer[1])
3441 || (glyph_row = MATRIX_ROW (w->current_matrix, w->cursor.vpos), 3440 || (glyph_row = MATRIX_ROW (w->current_matrix, w->cursor.vpos),
3442 /* Can't do it in a continued line because continuation 3441 /* Can't do it in a continued line because continuation
3443 lines would change. */ 3442 lines would change. */
3444 (glyph_row->continued_p 3443 (glyph_row->continued_p
3444 || glyph_row->exact_window_width_line_p
3445 /* Can't use this method if the line overlaps others or is 3445 /* Can't use this method if the line overlaps others or is
3446 overlapped by others because these other lines would 3446 overlapped by others because these other lines would
3447 have to be redisplayed. */ 3447 have to be redisplayed. */
3448 || glyph_row->overlapping_p 3448 || glyph_row->overlapping_p
3449 || glyph_row->overlapped_p)) 3449 || glyph_row->overlapped_p))
3644 ? XFASTINT (w->left_margin_cols) 3644 ? XFASTINT (w->left_margin_cols)
3645 : 0)); 3645 : 0));
3646 y = WINDOW_TO_FRAME_VPOS (w, w->cursor.vpos); 3646 y = WINDOW_TO_FRAME_VPOS (w, w->cursor.vpos);
3647 cursor_to (y, x); 3647 cursor_to (y, x);
3648 } 3648 }
3649
3650 #ifdef HAVE_WINDOW_SYSTEM
3651 update_window_fringes (w, 0);
3652 #endif
3649 3653
3650 if (FRAME_RIF (f)) 3654 if (FRAME_RIF (f))
3651 FRAME_RIF (f)->update_window_end_hook (w, 1, 0); 3655 FRAME_RIF (f)->update_window_end_hook (w, 1, 0);
3652 update_end (f); 3656 update_end (f);
3653 updated_row = NULL; 3657 updated_row = NULL;
4190 } 4194 }
4191 4195
4192 #if GLYPH_DEBUG 4196 #if GLYPH_DEBUG
4193 /* Remember the redisplay method used to display the matrix. */ 4197 /* Remember the redisplay method used to display the matrix. */
4194 strcpy (w->current_matrix->method, w->desired_matrix->method); 4198 strcpy (w->current_matrix->method, w->desired_matrix->method);
4199 #endif
4200
4201 #ifdef HAVE_WINDOW_SYSTEM
4202 update_window_fringes (w, 0);
4195 #endif 4203 #endif
4196 4204
4197 /* End the update of window W. Don't set the cursor if we 4205 /* End the update of window W. Don't set the cursor if we
4198 paused updating the display because in this case, 4206 paused updating the display because in this case,
4199 set_window_cursor_after_update hasn't been called, and 4207 set_window_cursor_after_update hasn't been called, and
4513 4521
4514 /* Draw truncation marks etc. */ 4522 /* Draw truncation marks etc. */
4515 if (!current_row->enabled_p 4523 if (!current_row->enabled_p
4516 || desired_row->y != current_row->y 4524 || desired_row->y != current_row->y
4517 || desired_row->visible_height != current_row->visible_height 4525 || desired_row->visible_height != current_row->visible_height
4518 || desired_row->overlay_arrow_p != current_row->overlay_arrow_p 4526 || desired_row->cursor_in_fringe_p != current_row->cursor_in_fringe_p
4519 || desired_row->truncated_on_left_p != current_row->truncated_on_left_p 4527 || current_row->redraw_fringe_bitmaps_p
4520 || desired_row->truncated_on_right_p != current_row->truncated_on_right_p
4521 || desired_row->continued_p != current_row->continued_p
4522 || desired_row->mode_line_p != current_row->mode_line_p 4528 || desired_row->mode_line_p != current_row->mode_line_p
4523 || (desired_row->indicate_empty_line_p 4529 || desired_row->exact_window_width_line_p != current_row->exact_window_width_line_p
4524 != current_row->indicate_empty_line_p)
4525 || (MATRIX_ROW_CONTINUATION_LINE_P (desired_row) 4530 || (MATRIX_ROW_CONTINUATION_LINE_P (desired_row)
4526 != MATRIX_ROW_CONTINUATION_LINE_P (current_row))) 4531 != MATRIX_ROW_CONTINUATION_LINE_P (current_row)))
4527 rif->after_update_window_line_hook (desired_row); 4532 rif->after_update_window_line_hook (desired_row);
4528 } 4533 }
4529 4534
4774 struct glyph_row *d = MATRIX_ROW (desired_matrix, i); 4779 struct glyph_row *d = MATRIX_ROW (desired_matrix, i);
4775 struct glyph_row *c = MATRIX_ROW (current_matrix, i); 4780 struct glyph_row *c = MATRIX_ROW (current_matrix, i);
4776 4781
4777 if (c->enabled_p 4782 if (c->enabled_p
4778 && d->enabled_p 4783 && d->enabled_p
4784 && !d->redraw_fringe_bitmaps_p
4779 && c->y == d->y 4785 && c->y == d->y
4780 && MATRIX_ROW_BOTTOM_Y (c) <= yb 4786 && MATRIX_ROW_BOTTOM_Y (c) <= yb
4781 && MATRIX_ROW_BOTTOM_Y (d) <= yb 4787 && MATRIX_ROW_BOTTOM_Y (d) <= yb
4782 && row_equal_p (w, c, d, 1)) 4788 && row_equal_p (w, c, d, 1))
4783 { 4789 {
4829 while (i - 1 > first_new 4835 while (i - 1 > first_new
4830 && j - 1 > first_old 4836 && j - 1 > first_old
4831 && MATRIX_ROW (current_matrix, i - 1)->enabled_p 4837 && MATRIX_ROW (current_matrix, i - 1)->enabled_p
4832 && (MATRIX_ROW (current_matrix, i - 1)->y 4838 && (MATRIX_ROW (current_matrix, i - 1)->y
4833 == MATRIX_ROW (desired_matrix, j - 1)->y) 4839 == MATRIX_ROW (desired_matrix, j - 1)->y)
4840 && !MATRIX_ROW (desired_matrix, j - 1)->redraw_fringe_bitmaps_p
4834 && row_equal_p (w, 4841 && row_equal_p (w,
4835 MATRIX_ROW (desired_matrix, i - 1), 4842 MATRIX_ROW (desired_matrix, i - 1),
4836 MATRIX_ROW (current_matrix, j - 1), 1)) 4843 MATRIX_ROW (current_matrix, j - 1), 1))
4837 --i, --j; 4844 --i, --j;
4838 last_new = i; 4845 last_new = i;
5021 int to_overlapped_p; 5028 int to_overlapped_p;
5022 5029
5023 to = MATRIX_ROW (current_matrix, r->desired_vpos + j); 5030 to = MATRIX_ROW (current_matrix, r->desired_vpos + j);
5024 from = MATRIX_ROW (desired_matrix, r->desired_vpos + j); 5031 from = MATRIX_ROW (desired_matrix, r->desired_vpos + j);
5025 to_overlapped_p = to->overlapped_p; 5032 to_overlapped_p = to->overlapped_p;
5033 if (!from->mode_line_p && !w->pseudo_window_p
5034 && (to->left_fringe_bitmap != from->left_fringe_bitmap
5035 || to->right_fringe_bitmap != from->right_fringe_bitmap))
5036 from->redraw_fringe_bitmaps_p = 1;
5026 assign_row (to, from); 5037 assign_row (to, from);
5027 to->enabled_p = 1, from->enabled_p = 0; 5038 to->enabled_p = 1, from->enabled_p = 0;
5028 to->overlapped_p = to_overlapped_p; 5039 to->overlapped_p = to_overlapped_p;
5029 } 5040 }
5030 } 5041 }