summaryrefslogtreecommitdiff
path: root/src/fringe.c
diff options
context:
space:
mode:
authorKaroly Lorentey <lorentey@elte.hu>2005-09-04 03:48:17 +0000
committerKaroly Lorentey <lorentey@elte.hu>2005-09-04 03:48:17 +0000
commit14e4406d6ebb4480ecf4d0c72dd0ba8f09380357 (patch)
tree366f43a2fca3e0e2253a569663b875a5849eea08 /src/fringe.c
parent270c11a9e118e3305a471a226a0a1079ea96cf49 (diff)
parent3ee7e11e0a24ef54e512de4b73349d0bfa2f2ae8 (diff)
downloademacs-14e4406d6ebb4480ecf4d0c72dd0ba8f09380357.tar.gz
Merged in changes from CVS trunk. Plus added lisp/term tweaks.
Patches applied: * lorentey@elte.hu--2004/emacs--cvs-trunk--0--base-0 tag of miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-474 * lorentey@elte.hu--2004/emacs--cvs-trunk--0--patch-1 Add CVS metadata files. * lorentey@elte.hu--2004/emacs--cvs-trunk--0--patch-2 Update from CVS. git-archimport-id: lorentey@elte.hu--2004/emacs--multi-tty--0--patch-393
Diffstat (limited to 'src/fringe.c')
-rw-r--r--src/fringe.c39
1 files changed, 23 insertions, 16 deletions
diff --git a/src/fringe.c b/src/fringe.c
index 7731c0302e9..25de5aa604e 100644
--- a/src/fringe.c
+++ b/src/fringe.c
@@ -1,6 +1,7 @@
/* Fringe handling (split from xdisp.c).
- Copyright (C) 1985,86,87,88,93,94,95,97,98,99,2000,01,02,03,04
- Free Software Foundation, Inc.
+ Copyright (C) 1985, 1986, 1987, 1988, 1993, 1994, 1995, 1997,
+ 1998, 1999, 2000, 2000, 2001, 2002, 2003, 2004,
+ 2005 Free Software Foundation, Inc.
This file is part of GNU Emacs.
@@ -777,13 +778,14 @@ draw_window_fringes (w, no_fringe)
/* Recalculate the bitmaps to show in the fringes of window W.
- If FORCE_P is 0, only mark rows with modified bitmaps for update in
- redraw_fringe_bitmaps_p; else mark all rows for update. */
+ Only mark rows with modified bitmaps for update in redraw_fringe_bitmaps_p.
+
+ If KEEP_CURRENT_P is 0, update current_matrix too. */
int
-update_window_fringes (w, force_p)
+update_window_fringes (w, keep_current_p)
struct window *w;
- int force_p;
+ int keep_current_p;
{
struct glyph_row *row, *cur = 0;
int yb = window_text_bottom_y (w);
@@ -849,7 +851,8 @@ update_window_fringes (w, force_p)
{
if (!done_top)
{
- if (MATRIX_ROW_START_CHARPOS (row) <= BUF_BEGV (XBUFFER (w->buffer)))
+ if (MATRIX_ROW_START_CHARPOS (row) <= BUF_BEGV (XBUFFER (w->buffer))
+ && !MATRIX_ROW_PARTIALLY_VISIBLE_AT_TOP_P (w, row))
row->indicate_bob_p = !NILP (boundary_top);
else
row->indicate_top_line_p = !NILP (arrow_top);
@@ -858,7 +861,8 @@ update_window_fringes (w, force_p)
if (!done_bot)
{
- if (MATRIX_ROW_END_CHARPOS (row) >= BUF_ZV (XBUFFER (w->buffer)))
+ if (MATRIX_ROW_END_CHARPOS (row) >= BUF_ZV (XBUFFER (w->buffer))
+ && !MATRIX_ROW_PARTIALLY_VISIBLE_AT_BOTTOM_P (w, row))
row->indicate_eob_p = !NILP (boundary_bot), done_bot = 1;
else if (y + row->height >= yb)
row->indicate_bottom_line_p = !NILP (arrow_bot), done_bot = 1;
@@ -943,8 +947,7 @@ update_window_fringes (w, force_p)
else
right = NO_FRINGE_BITMAP;
- if (force_p
- || row->y != cur->y
+ if (row->y != cur->y
|| row->visible_height != cur->visible_height
|| row->ends_at_zv_p != cur->ends_at_zv_p
|| left != cur->left_fringe_bitmap
@@ -953,11 +956,15 @@ update_window_fringes (w, force_p)
|| right_face_id != cur->right_fringe_face_id
|| cur->redraw_fringe_bitmaps_p)
{
- redraw_p = row->redraw_fringe_bitmaps_p = cur->redraw_fringe_bitmaps_p = 1;
- cur->left_fringe_bitmap = left;
- cur->right_fringe_bitmap = right;
- cur->left_fringe_face_id = left_face_id;
- cur->right_fringe_face_id = right_face_id;
+ redraw_p = row->redraw_fringe_bitmaps_p = 1;
+ if (!keep_current_p)
+ {
+ cur->redraw_fringe_bitmaps_p = 1;
+ cur->left_fringe_bitmap = left;
+ cur->right_fringe_bitmap = right;
+ cur->left_fringe_face_id = left_face_id;
+ cur->right_fringe_face_id = right_face_id;
+ }
}
if (row->overlay_arrow_bitmap != cur->overlay_arrow_bitmap)
@@ -975,7 +982,7 @@ update_window_fringes (w, force_p)
row[-1].redraw_fringe_bitmaps_p = cur[-1].redraw_fringe_bitmaps_p = 1;
}
- return redraw_p;
+ return redraw_p && !keep_current_p;
}