Fix overline display over stretch glyphs with box on NS

* src/nsterm.m (ns_dumpglyphs_stretch): Don't draw text
decorations when there is a box.
(ns_draw_glyph_string): Draw text decorations after the box
in stretch glyph that have one.
This commit is contained in:
Po Lu 2021-12-12 21:33:56 +08:00
parent 5bc785d81c
commit 0ee1a46e6c

View file

@ -3858,10 +3858,14 @@ Function modeled after x_draw_glyph_string_box ().
NSRectFill (glyphRect);
/* Draw overlining, etc. on the stretch glyph (or the part
of the stretch glyph after the cursor). */
ns_draw_text_decoration (s, face, fgCol, NSWidth (glyphRect),
NSMinX (glyphRect));
/* Draw overlining, etc. on the stretch glyph (or the part of
the stretch glyph after the cursor). If the glyph has a box,
then decorations will be drawn after drawing the box in
ns_draw_glyph_string, in order to prevent them from being
overwritten by the box. */
if (s->face->box != FACE_NO_BOX)
ns_draw_text_decoration (s, face, fgCol, NSWidth (glyphRect),
NSMinX (glyphRect));
s->background_filled_p = 1;
}
@ -4105,6 +4109,16 @@ Function modeled after x_draw_glyph_string_box ().
if (!s->for_overlaps && !box_drawn_p && s->face->box != FACE_NO_BOX)
ns_dumpglyphs_box_or_relief (s);
if (s->face->box != FACE_NO_BOX
&& s->first_glyph->type == STRETCH_GLYPH)
{
NSColor *fg_color;
fg_color = ns_lookup_indexed_color (NS_FACE_FOREGROUND (s->face), s->f);
ns_draw_text_decoration (s, s->face, fg_color,
s->background_width, s->x);
}
ns_unfocus (s->f);
/* Draw surrounding overhangs. */