changeset 29461:159e43bc7e3c

(display_line): Revert change of 2000-06-06. Treat padding glyph not fitting on line as whole character not fitting on line.
author Gerd Moellmann <gerd@gnu.org>
date Tue, 06 Jun 2000 12:25:50 +0000
parents 7d50aac00502
children 3306af2e4f3d
files src/xdisp.c
diffstat 1 files changed, 25 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- a/src/xdisp.c	Tue Jun 06 10:39:20 2000 +0000
+++ b/src/xdisp.c	Tue Jun 06 12:25:50 2000 +0000
@@ -11319,8 +11319,6 @@
 	  for (i = 0; i < nglyphs; ++i, x = new_x)
 	    {
 	      glyph = row->glyphs[TEXT_AREA] + n_glyphs_before + i;
-	      if (CHAR_GLYPH_PADDING_P (*glyph))
-		continue;
 	      new_x = x + glyph->pixel_width;
 
 	      if (/* Lines are continued.  */
@@ -11348,6 +11346,31 @@
 		      if (i == nglyphs - 1)
 			set_iterator_to_next (it);
 		    }
+		  else if (CHAR_GLYPH_PADDING_P (*glyph)
+			   && !FRAME_WINDOW_P (it->f))
+		    {
+		      /* A padding glyph that doesn't fit on this line.
+			 This means the whole character doesn't fit
+			 on the line.  */
+		      row->used[TEXT_AREA] = n_glyphs_before;
+		  
+		      /* Fill the rest of the row with continuation
+			 glyphs like in 20.x.  */
+		      while (row->glyphs[TEXT_AREA] + row->used[TEXT_AREA]
+			     < row->glyphs[1 + TEXT_AREA])
+			produce_special_glyphs (it, IT_CONTINUATION);
+		      
+		      row->continued_p = 1;
+		      it->current_x = x_before;
+		      it->continuation_lines_width += x_before;
+		      
+		      /* Restore the height to what it was before the
+			 element not fitting on the line.  */
+		      it->max_ascent = ascent;
+		      it->max_descent = descent;
+		      it->max_phys_ascent = phys_ascent;
+		      it->max_phys_descent = phys_descent;
+		    }
 		  else
 		    {
 		      /* Display element draws past the right edge of