changeset 53604:59115f5809c3

(struct glyph_row): New members left_fringe_bitmap, right_fringe_bitmap, redraw_fringe_bitmaps_p for new fringe handling. New members exact_window_width_line_p and cursor_in_fringe_p for overflowing newlines into right fringe. New members indicate_bob_p, indicate_top_line_p, indicate_eob_p, and indicate_bottom_line_p for buffer boundaries and scrolling. (enum fringe_bitmap_type): Add UP_ARROW_BITMAP, DOWN_ARROW_BITMAP, FIRST_LINE_BITMAP, LAST_LINE_BITMAP, FILLED_BOX_CURSOR_BITMAP, HOLLOW_BOX_CURSOR_BITMAP, BAR_CURSOR_BITMAP, HBAR_CURSOR_BITMAP, and HOLLOW_SQUARE_BITMAP. (draw_fringe_bitmap, draw_window_fringes, update_window_fringes): Add prototypes.
author Kim F. Storm <storm@cua.dk>
date Fri, 16 Jan 2004 18:40:46 +0000
parents c7c62631959b
children 7dfd96e25ec6
files src/dispextern.h
diffstat 1 files changed, 44 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/src/dispextern.h	Fri Jan 16 18:40:33 2004 +0000
+++ b/src/dispextern.h	Fri Jan 16 18:40:46 2004 +0000
@@ -709,6 +709,15 @@
      position of the next row.  */
   struct display_pos end;
 
+  /* Left fringe bitmap number (enum fringe_bitmap_type).  */
+  unsigned left_fringe_bitmap : 4;
+
+  /* Right fringe bitmap number (enum fringe_bitmap_type).  */
+  unsigned right_fringe_bitmap : 4;
+
+  /* 1 means that we must draw the bitmaps of this row.  */
+  unsigned redraw_fringe_bitmaps_p : 1;
+
   /* In a desired matrix, 1 means that this row must be updated.  In a
      current matrix, 0 means that the row has been invalidated, i.e.
      the row's contents do not agree with what is visible on the
@@ -777,6 +786,29 @@
   /* 1 means this row was ended by a newline from a string.  */
   unsigned ends_in_newline_from_string_p : 1;
 
+  /* 1 means this row width is exactly the width of the window, and the
+     final newline character is hidden in the right fringe.  */
+  unsigned exact_window_width_line_p : 1;
+
+  /* 1 means this row currently shows the cursor in the right fringe.  */
+  unsigned cursor_in_fringe_p : 1;
+
+  /* Non-zero means display a bitmap on X frames indicating that this
+     the first line of the buffer.  */
+  unsigned indicate_bob_p : 1;
+
+  /* Non-zero means display a bitmap on X frames indicating that this
+     the top line of the window, but not start of the buffer.  */
+  unsigned indicate_top_line_p : 1;
+
+  /* Non-zero means display a bitmap on X frames indicating that this
+     the last line of the buffer.  */
+  unsigned indicate_eob_p : 1;
+
+  /* Non-zero means display a bitmap on X frames indicating that this
+     the bottom line of the window, but not end of the buffer.  */
+  unsigned indicate_bottom_line_p : 1;
+
   /* Continuation lines width at the start of the row.  */
   int continuation_lines_width;
 };
@@ -1582,10 +1614,19 @@
   NO_FRINGE_BITMAP = 0,
   LEFT_TRUNCATION_BITMAP,
   RIGHT_TRUNCATION_BITMAP,
+  UP_ARROW_BITMAP,
+  DOWN_ARROW_BITMAP,
   CONTINUED_LINE_BITMAP,
   CONTINUATION_LINE_BITMAP,
   OVERLAY_ARROW_BITMAP,
+  FIRST_LINE_BITMAP,
+  LAST_LINE_BITMAP,
+  FILLED_BOX_CURSOR_BITMAP,
+  HOLLOW_BOX_CURSOR_BITMAP,
+  BAR_CURSOR_BITMAP,
+  HBAR_CURSOR_BITMAP,
   ZV_LINE_BITMAP,
+  HOLLOW_SQUARE_BITMAP,
   MAX_FRINGE_BITMAPS
 };
 
@@ -2489,7 +2530,10 @@
 int in_display_vector_p P_ ((struct it *));
 int frame_mode_line_height P_ ((struct frame *));
 void highlight_trailing_whitespace P_ ((struct frame *, struct glyph_row *));
+void draw_fringe_bitmap P_ ((struct window *, struct glyph_row *, int));
 void draw_row_fringe_bitmaps P_ ((struct window *, struct glyph_row *));
+void draw_window_fringes P_ ((struct window *));
+int update_window_fringes P_ ((struct window *, int));
 void compute_fringe_widths P_ ((struct frame *, int));
 extern Lisp_Object Qtool_bar;
 extern Lisp_Object Vshow_trailing_whitespace;