]> git.eshelyaron.com Git - emacs.git/commitdiff
(spec_glyph_lookup_face): New function.
authorRichard M. Stallman <rms@gnu.org>
Fri, 17 Jun 2005 14:03:08 +0000 (14:03 +0000)
committerRichard M. Stallman <rms@gnu.org>
Fri, 17 Jun 2005 14:03:08 +0000 (14:03 +0000)
(build_frame_matrix_from_leaf_window): Use it.

src/dispnew.c

index 6d851ba8471ab32a041e89fd13a6fe040077aa86..727547d089df3f85714073ddf5bd10643fbb0606 100644 (file)
@@ -2722,6 +2722,7 @@ build_frame_matrix_from_leaf_window (frame_matrix, w)
          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 @@ build_frame_matrix_from_leaf_window (frame_matrix, w)
     }
 }
 
+/* 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.