From 4458cf11f717f89a2cd0ef1bd92573b74dbcd016 Mon Sep 17 00:00:00 2001 From: Kenichi Handa Date: Wed, 14 Mar 2001 13:18:05 +0000 Subject: [PATCH] (x_draw_glyph_string): Draw relief (if any) before drawing glyph string. --- src/xterm.c | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/src/xterm.c b/src/xterm.c index 158db55612..7652bbb045 100644 --- a/src/xterm.c +++ b/src/xterm.c @@ -4252,6 +4252,8 @@ static void x_draw_glyph_string (s) struct glyph_string *s; { + int relief_drawn_p = 0; + /* If S draws into the background of its successor, draw the background of the successor first so that S can draw into it. This makes S->next use XDrawString instead of XDrawImageString. */ @@ -4267,6 +4269,19 @@ x_draw_glyph_string (s) x_set_glyph_string_gc (s); x_set_glyph_string_clipping (s); + /* Draw relief (if any) in advance for char/composition so that the + glyph string can be drawn over it. */ + if (!s->for_overlaps_p + && s->face->box != FACE_NO_BOX + && (s->first_glyph->type == CHAR_GLYPH + || s->first_glyph->type == COMPOSITE_GLYPH)) + + { + x_draw_glyph_string_background (s, 1); + x_draw_glyph_string_box (s); + relief_drawn_p = 1; + } + switch (s->first_glyph->type) { case IMAGE_GLYPH: @@ -4377,8 +4392,8 @@ x_draw_glyph_string (s) } } - /* Draw relief. */ - if (s->face->box != FACE_NO_BOX) + /* Draw relief if not yet drawn. */ + if (!relief_drawn_p && s->face->box != FACE_NO_BOX) x_draw_glyph_string_box (s); } -- 2.39.2