aboutsummaryrefslogtreecommitdiffstats
path: root/src/xdisp.c
diff options
context:
space:
mode:
authorGerd Moellmann <[email protected]>2000-06-06 12:25:50 +0000
committerGerd Moellmann <[email protected]>2000-06-06 12:25:50 +0000
commit3b3c4bf057e55157136cac42746db6e75aee44ab (patch)
treeb3c6ed0d4c2b20000c1d1e028d46bf01a8945034 /src/xdisp.c
parent5f1aea9aa7e7ec2a9c10410508db82c11293daea (diff)
(display_line): Revert change of 2000-06-06. Treat
padding glyph not fitting on line as whole character not fitting on line.
Diffstat (limited to 'src/xdisp.c')
-rw-r--r--src/xdisp.c27
1 files changed, 25 insertions, 2 deletions
diff --git a/src/xdisp.c b/src/xdisp.c
index 3920510a5d..3affc6e132 100644
--- a/src/xdisp.c
+++ b/src/xdisp.c
@@ -11319,8 +11319,6 @@ display_line (it)
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 @@ display_line (it)
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