changeset 29474:a4a198e7b4e5

(struct it): Add starts_in_middle_of_char_p. (struct glyph_row): Add starts_in_middle_of_char_p and ends_in_middle_of_char_p. (MATRIX_ROW_ENDS_IN_MIDDLE_OF_CHAR_P): Test row's ends_in_middle_of_char_p flag. (MATRIX_ROW_STARTS_IN_MIDDLE_OF_CHAR_P): Likewise.
author Gerd Moellmann <gerd@gnu.org>
date Tue, 06 Jun 2000 20:02:59 +0000
parents 80835e075d87
children b96b18a0f34b
files src/dispextern.h
diffstat 1 files changed, 19 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- a/src/dispextern.h	Tue Jun 06 20:02:39 2000 +0000
+++ b/src/dispextern.h	Tue Jun 06 20:02:59 2000 +0000
@@ -667,6 +667,16 @@
   /* 1 in a current row means this row is overlapped by another row.  */
   unsigned overlapped_p : 1;
 
+  /* 1 means this line ends in the middle of a character consisting
+     of more than one glyph.  Some glyphs have been put in this row,
+     the rest are put in rows below this one.  */
+  unsigned ends_in_middle_of_char_p : 1;
+  
+  /* 1 means this line starts in the middle of a character consisting
+     of more than one glyph.  Some glyphs have been put in the
+     previoius row, the rest are put in this row.  */
+  unsigned starts_in_middle_of_char_p : 1;
+
   /* 1 in a current row means this row overlaps others.  */
   unsigned overlapping_p : 1;
 
@@ -795,7 +805,8 @@
 
 #define MATRIX_ROW_ENDS_IN_MIDDLE_OF_CHAR_P(ROW)	\
      ((ROW)->end.dpvec_index >= 0			\
-      || (ROW)->end.overlay_string_index >= 0)
+      || (ROW)->end.overlay_string_index >= 0		\
+      || (ROW)->ends_in_middle_of_char_p)
 
 /* Non-zero if ROW ends in the middle of an overlay string.  */
 
@@ -806,6 +817,7 @@
      
 #define MATRIX_ROW_STARTS_IN_MIDDLE_OF_CHAR_P(ROW)	\
      ((ROW)->start.dpvec_index >= 0			\
+      || (ROW)->starts_in_middle_of_char_p		\
       || ((ROW)->start.overlay_string_index >= 0	\
 	  && (ROW)->start.string_pos.charpos > 0))
 
@@ -1622,7 +1634,12 @@
 
   /* 1 means the actual glyph is not available in the current
      system.  */
-  unsigned glyph_not_available_p : 1; 
+  unsigned glyph_not_available_p : 1;
+
+  /* 1 means the next line in display_line continues a character
+     consisting of more than one glyph, and some glyphs of this
+     character have been put on the previous line.  */
+  unsigned starts_in_middle_of_char_p : 1;
 
   /* The ID of the default face to use.  One of DEFAULT_FACE_ID,
      MODE_LINE_FACE_ID, or TOOL_BAR_FACE_ID, depending on what we