]> git.eshelyaron.com Git - emacs.git/commitdiff
(merge_face_vectors):
authorMiles Bader <miles@gnu.org>
Mon, 28 Aug 2000 14:42:49 +0000 (14:42 +0000)
committerMiles Bader <miles@gnu.org>
Mon, 28 Aug 2000 14:42:49 +0000 (14:42 +0000)
  Clear TO's :font attribute if made inconsistent by a font-related attribute in FROM.
(merge_face_inheritance):
  Add function comment.

src/ChangeLog
src/xfaces.c

index 69be13105dce74ab758a98fa6ab5507d1c54f706..7a82c85e0e826fdd97b45dd05f00b108a55b8c5f 100644 (file)
@@ -1,3 +1,9 @@
+2000-08-28  Miles Bader  <miles@gnu.org>
+
+       * xfaces.c (merge_face_vectors): Clear TO's :font attribute if
+       made inconsistent by a font-related attribute in FROM.
+       (merge_face_inheritance): Add function comment.
+
 2000-08-28  Kenichi Handa  <handa@etl.go.jp>
 
        * keyboard.c (read_char_minibuf_menu_prompt): Call read_char with
index 17f9c5928bbb6297ebcee456bac5795984e34556..c75534b30e527285a4148fc10b4bca16279ccc7a 100644 (file)
@@ -3150,6 +3150,18 @@ merge_face_vectors (f, from, to, cycle_check)
       && !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 @@ merge_face_vectors (f, from, to, cycle_check)
    ? 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;