]> git.eshelyaron.com Git - emacs.git/commitdiff
(x_draw_glyph_string): Draw relief (if any) before
authorKenichi Handa <handa@m17n.org>
Wed, 14 Mar 2001 13:18:05 +0000 (13:18 +0000)
committerKenichi Handa <handa@m17n.org>
Wed, 14 Mar 2001 13:18:05 +0000 (13:18 +0000)
drawing glyph string.

src/xterm.c

index 158db55612beade35b5430602f6bfa6c76214de6..7652bbb04534e452332e3af668ccac0dc244f150 100644 (file)
@@ -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);
     }