comparison src/dispnew.c @ 83384:08b4dd6a6e87

Merged from miles@gnu.org--gnu-2005 (patch 578-592) Patches applied: * miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-578 Update from CVS * miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-579 Update from CVS * miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-580 Update from CVS * miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-581 Update from CVS * miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-582 Update from CVS * miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-583 Update from CVS * miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-584 Update from CVS * miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-585 Update from CVS * miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-586 Update from CVS * miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-587 Update from CVS * miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-588 Update from CVS * miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-589 Update from CVS * miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-590 Update from CVS * miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-591 Update from CVS * miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-592 Update from CVS git-archimport-id: lorentey@elte.hu--2004/emacs--multi-tty--0--patch-424
author Karoly Lorentey <lorentey@elte.hu>
date Wed, 12 Oct 2005 16:14:04 +0000
parents 5272862a4865 a82ae68a578e
children 573105015a96
comparison
equal deleted inserted replaced
83383:2a679c81f552 83384:08b4dd6a6e87
3958 /* Reset flag in W. */ 3958 /* Reset flag in W. */
3959 w->must_be_updated_p = 0; 3959 w->must_be_updated_p = 0;
3960 } 3960 }
3961 } 3961 }
3962 3962
3963 #ifdef HAVE_WINDOW_SYSTEM
3963 3964
3964 /* Redraw lines from the current matrix of window W that are 3965 /* Redraw lines from the current matrix of window W that are
3965 overlapped by other rows. YB is bottom-most y-position in W. */ 3966 overlapped by other rows. YB is bottom-most y-position in W. */
3966 3967
3967 static void 3968 static void
4034 4035
4035 bottom_y = MATRIX_ROW_BOTTOM_Y (row); 4036 bottom_y = MATRIX_ROW_BOTTOM_Y (row);
4036 4037
4037 if (row->overlapping_p && i > 0 && bottom_y < yb) 4038 if (row->overlapping_p && i > 0 && bottom_y < yb)
4038 { 4039 {
4039 if (row->used[LEFT_MARGIN_AREA]) 4040 int overlaps = 0;
4040 rif->fix_overlapping_area (w, row, LEFT_MARGIN_AREA); 4041
4041 4042 if (MATRIX_ROW_OVERLAPS_PRED_P (row)
4042 if (row->used[TEXT_AREA]) 4043 && !MATRIX_ROW (w->current_matrix, i - 1)->overlapped_p)
4043 rif->fix_overlapping_area (w, row, TEXT_AREA); 4044 overlaps |= OVERLAPS_PRED;
4044 4045 if (MATRIX_ROW_OVERLAPS_SUCC_P (row)
4045 if (row->used[RIGHT_MARGIN_AREA]) 4046 && !MATRIX_ROW (w->current_matrix, i + 1)->overlapped_p)
4046 rif->fix_overlapping_area (w, row, RIGHT_MARGIN_AREA); 4047 overlaps |= OVERLAPS_SUCC;
4047 4048
4048 /* Record in neighbour rows that ROW overwrites part of their 4049 if (overlaps)
4049 display. */ 4050 {
4050 if (row->phys_ascent > row->ascent && i > 0) 4051 if (row->used[LEFT_MARGIN_AREA])
4051 MATRIX_ROW (w->current_matrix, i - 1)->overlapped_p = 1; 4052 rif->fix_overlapping_area (w, row, LEFT_MARGIN_AREA, overlaps);
4052 if ((row->phys_height - row->phys_ascent 4053
4053 > row->height - row->ascent) 4054 if (row->used[TEXT_AREA])
4054 && bottom_y < yb) 4055 rif->fix_overlapping_area (w, row, TEXT_AREA, overlaps);
4055 MATRIX_ROW (w->current_matrix, i + 1)->overlapped_p = 1; 4056
4057 if (row->used[RIGHT_MARGIN_AREA])
4058 rif->fix_overlapping_area (w, row, RIGHT_MARGIN_AREA, overlaps);
4059
4060 /* Record in neighbour rows that ROW overwrites part of
4061 their display. */
4062 if (overlaps & OVERLAPS_PRED)
4063 MATRIX_ROW (w->current_matrix, i - 1)->overlapped_p = 1;
4064 if (overlaps & OVERLAPS_SUCC)
4065 MATRIX_ROW (w->current_matrix, i + 1)->overlapped_p = 1;
4066 }
4056 } 4067 }
4057 4068
4058 if (bottom_y >= yb) 4069 if (bottom_y >= yb)
4059 break; 4070 break;
4060 } 4071 }
4061 } 4072 }
4073
4074 #endif /* HAVE_WINDOW_SYSTEM */
4062 4075
4063 4076
4064 #ifdef GLYPH_DEBUG 4077 #ifdef GLYPH_DEBUG
4065 4078
4066 /* Check that no row in the current matrix of window W is enabled 4079 /* Check that no row in the current matrix of window W is enabled
4218 } 4231 }
4219 4232
4220 /* Fix the appearance of overlapping/overlapped rows. */ 4233 /* Fix the appearance of overlapping/overlapped rows. */
4221 if (!paused_p && !w->pseudo_window_p) 4234 if (!paused_p && !w->pseudo_window_p)
4222 { 4235 {
4236 #ifdef HAVE_WINDOW_SYSTEM
4223 if (changed_p && rif->fix_overlapping_area) 4237 if (changed_p && rif->fix_overlapping_area)
4224 { 4238 {
4225 redraw_overlapped_rows (w, yb); 4239 redraw_overlapped_rows (w, yb);
4226 redraw_overlapping_rows (w, yb); 4240 redraw_overlapping_rows (w, yb);
4227 } 4241 }
4242 #endif
4228 4243
4229 /* Make cursor visible at cursor position of W. */ 4244 /* Make cursor visible at cursor position of W. */
4230 set_window_cursor_after_update (w); 4245 set_window_cursor_after_update (w);
4231 4246
4232 #if 0 /* Check that current matrix invariants are satisfied. This is 4247 #if 0 /* Check that current matrix invariants are satisfied. This is