changeset 56499:5277ee215de2

(display_line): Increment nrows_scale_factor and set fonts_changed_p if past last allocated row. (append_glyph, append_composite_glyph, produce_image_glyph) (append_stretch_glyph): Increment ncols_scale_factor and set fonts_changed_p if current area is full.
author Kim F. Storm <storm@cua.dk>
date Wed, 21 Jul 2004 21:09:43 +0000
parents ee3ccdb058d1
children b36bc601f35e
files src/xdisp.c
diffstat 1 files changed, 27 insertions(+), 3 deletions(-) [+]
line wrap: on
line diff
--- a/src/xdisp.c	Wed Jul 21 21:08:56 2004 +0000
+++ b/src/xdisp.c	Wed Jul 21 21:09:43 2004 +0000
@@ -14462,9 +14462,13 @@
   /* We always start displaying at hpos zero even if hscrolled.  */
   xassert (it->hpos == 0 && it->current_x == 0);
 
-  /* We must not display in a row that's not a text row.  */
-  xassert (MATRIX_ROW_VPOS (row, it->w->desired_matrix)
-	   < it->w->desired_matrix->nrows);
+  if (MATRIX_ROW_VPOS (row, it->w->desired_matrix)
+      >= it->w->desired_matrix->nrows)
+    {
+      it->w->nrows_scale_factor++;
+      fonts_changed_p = 1;
+      return 0;
+    }
 
   /* Is IT->w showing the region?  */
   it->w->region_showing = it->region_beg_charpos > 0 ? Qt : Qnil;
@@ -18135,6 +18139,11 @@
       glyph->font_type = FONT_TYPE_UNKNOWN;
       ++it->glyph_row->used[area];
     }
+  else if (!fonts_changed_p)
+    {
+      it->w->ncols_scale_factor++;
+      fonts_changed_p = 1;
+    }
 }
 
 /* Store one glyph for the composition IT->cmp_id in IT->glyph_row.
@@ -18172,6 +18181,11 @@
       glyph->font_type = FONT_TYPE_UNKNOWN;
       ++it->glyph_row->used[area];
     }
+  else if (!fonts_changed_p)
+    {
+      it->w->ncols_scale_factor++;
+      fonts_changed_p = 1;
+    }
 }
 
 
@@ -18341,6 +18355,11 @@
 	  glyph->font_type = FONT_TYPE_UNKNOWN;
 	  ++it->glyph_row->used[area];
 	}
+      else if (!fonts_changed_p)
+	{
+	  it->w->ncols_scale_factor++;
+	  fonts_changed_p = 1;
+	}
     }
 }
 
@@ -18384,6 +18403,11 @@
       glyph->font_type = FONT_TYPE_UNKNOWN;
       ++it->glyph_row->used[area];
     }
+  else if (!fonts_changed_p)
+    {
+      it->w->ncols_scale_factor++;
+      fonts_changed_p = 1;
+    }
 }