diff src/dispnew.c @ 63547:cbb687cf8169

(spec_glyph_lookup_face): New function. (build_frame_matrix_from_leaf_window): Use it.
author Richard M. Stallman <rms@gnu.org>
date Fri, 17 Jun 2005 14:03:08 +0000
parents 820ed588bcf4
children 4c33b0ac74a3 c016d82bf02b
line wrap: on
line diff
--- a/src/dispnew.c	Fri Jun 17 14:02:03 2005 +0000
+++ b/src/dispnew.c	Fri Jun 17 14:03:08 2005 +0000
@@ -2722,6 +2722,7 @@
 	  right_border_glyph = (dp && INTEGERP (DISP_BORDER_GLYPH (dp))
 				? XINT (DISP_BORDER_GLYPH (dp))
 				: '|');
+	  right_border_glyph = spec_glyph_lookup_face (w, right_border_glyph);
 	}
     }
   else
@@ -2802,6 +2803,27 @@
     }
 }
 
+/* Given a user-specified glyph, possibly including a Lisp-level face
+   ID, return a glyph that has a realized face ID.
+   This is used for glyphs displayed specially and not part of the text;
+   for instance, vertical separators, truncation markers, etc.  */
+
+GLYPH
+spec_glyph_lookup_face (w, glyph)
+     struct window *w;
+     GLYPH glyph;
+{
+  int lface_id = FAST_GLYPH_FACE (glyph);
+  /* Convert the glyph's specified face to a realized (cache) face.  */
+  if (lface_id > 0)
+    {
+      int face_id = merge_faces (XFRAME (w->frame),
+				 Qt, lface_id, DEFAULT_FACE_ID);
+      glyph
+	= FAST_MAKE_GLYPH (FAST_GLYPH_CHAR (glyph), face_id);
+    }
+  return glyph;
+}
 
 /* Add spaces to a glyph row ROW in a window matrix.