Mercurial > emacs
changeset 31221:5bd6bdf3d3cf
(merge_face_vectors):
Clear TO's :font attribute if made inconsistent by a font-related attribute in FROM.
(merge_face_inheritance):
Add function comment.
author | Miles Bader <miles@gnu.org> |
---|---|
date | Mon, 28 Aug 2000 14:41:55 +0000 |
parents | e947c5224fc0 |
children | 50b63dd65faf |
files | src/xfaces.c |
diffstat | 1 files changed, 19 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- a/src/xfaces.c Mon Aug 28 12:29:42 2000 +0000 +++ b/src/xfaces.c Mon Aug 28 14:41:55 2000 +0000 @@ -3150,6 +3150,18 @@ && !NILP (from[LFACE_INHERIT_INDEX])) merge_face_inheritance (f, from[LFACE_INHERIT_INDEX], to, cycle_check); + /* If TO specifies a :font attribute, and FROM specifies some + font-related attribute, we need to clear TO's :font attribute + (because it will be inconsistent with whatever FROM specifies, and + FROM takes precedence). */ + if (!NILP (to[LFACE_FONT_INDEX]) + && (!UNSPECIFIEDP (from[LFACE_FAMILY_INDEX]) + || !UNSPECIFIEDP (from[LFACE_HEIGHT_INDEX]) + || !UNSPECIFIEDP (from[LFACE_WEIGHT_INDEX]) + || !UNSPECIFIEDP (from[LFACE_SLANT_INDEX]) + || !UNSPECIFIEDP (from[LFACE_SWIDTH_INDEX]))) + to[LFACE_FONT_INDEX] = Qnil; + for (i = 1; i < LFACE_VECTOR_SIZE; ++i) if (!UNSPECIFIEDP (from[i])) if (i == LFACE_HEIGHT_INDEX && !INTEGERP (from[i])) @@ -3187,6 +3199,13 @@ ? Qnil \ : Fcons ((el), (check))) + +/* Merge face attributes from the face on frame F whose name is + INHERITS, into the vector of face attributes TO; INHERITS may also be + a list of face names, in which case they are applied in order. + CYCLE_CHECK is used to detect loops in face inheritance. + Returns true if any of the inherited attributes are `font-related'. */ + static void merge_face_inheritance (f, inherit, to, cycle_check) struct frame *f;