Mercurial > emacs
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 } |