From: Po Lu Date: Sun, 12 Dec 2021 13:33:56 +0000 (+0800) Subject: Fix overline display over stretch glyphs with box on NS X-Git-Tag: emacs-29.0.90~3597^2 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=0ee1a46e6c7fa159584a9c04f5ab9bf694d6de3b;p=emacs.git 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. --- diff --git a/src/nsterm.m b/src/nsterm.m index 5d39be3a870..4e5ce5ef700 100644 --- a/src/nsterm.m +++ b/src/nsterm.m @@ -3858,10 +3858,14 @@ ns_dumpglyphs_stretch (struct glyph_string *s) 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 @@ ns_draw_glyph_string (struct glyph_string *s) 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. */