diff src/dispextern.h @ 109296:f6f0d450d542

Fix ghost buffer boundary indicators in fringes (Bug#5634, Bug#6325). * dispextern.h (FRINGE_HEIGHT_BITS): New define. (struct glyph_row): New members left_fringe_offset and right_fringe_offset. * xterm.c (x_draw_fringe_bitmap): Don't clip bottom aligned bitmap specially. * w32term.c (w32_draw_fringe_bitmap): Likewise. * nsterm.m (ns_draw_fringe_bitmap): Likewise. * fringe.c (draw_fringe_bitmap_1): Don't clip bitmap here. Take account of bitmap offset. (draw_window_fringes): Take account of window vscroll. (update_window_fringes): Likewise. Extend top-aligned top indicator or bottom-aligned bottom indicator to adjacent rows if it doesn't fit in one row. Don't set redraw_fringe_bitmaps_p outside row comparison. Set left_fringe_offset and right_fringe_offset (Bug#5634, Bug#6325).
author YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
date Mon, 05 Jul 2010 18:58:31 +0900
parents af52c11fa4bd
children 60516122d066 cca2a663ef92
line wrap: on
line diff
--- a/src/dispextern.h	Sun Jul 04 02:59:56 2010 +0200
+++ b/src/dispextern.h	Mon Jul 05 18:58:31 2010 +0900
@@ -105,6 +105,8 @@
 /* Number of bits allocated to store fringe bitmap numbers.  */
 #define FRINGE_ID_BITS  16
 
+/* Number of bits allocated to store fringe bitmap height.  */
+#define FRINGE_HEIGHT_BITS 8
 
 
 /***********************************************************************
@@ -778,6 +780,12 @@
   /* Face of the right fringe glyph.  */
   unsigned right_fringe_face_id : FACE_ID_BITS;
 
+  /* Vertical offset of the left fringe bitmap.  */
+  signed left_fringe_offset : FRINGE_HEIGHT_BITS;
+
+  /* Vertical offset of the right fringe bitmap.  */
+  signed right_fringe_offset : FRINGE_HEIGHT_BITS;
+
   /* 1 means that we must draw the bitmaps of this row.  */
   unsigned redraw_fringe_bitmaps_p : 1;