]> git.eshelyaron.com Git - emacs.git/commitdiff
(merge_face_vectors): Don't do :ignore-defface overwriting here.
authorChong Yidong <cyd@stupidchicken.com>
Sun, 20 Nov 2005 22:35:48 +0000 (22:35 +0000)
committerChong Yidong <cyd@stupidchicken.com>
Sun, 20 Nov 2005 22:35:48 +0000 (22:35 +0000)
(Finternal_merge_in_global_face): Do it here.

src/ChangeLog
src/xfaces.c

index e70e00e2f577c8c5f4d2acde1ebee39d85595b46..addb672d10d3fb757fe99fbc3c2e407475af0511 100644 (file)
@@ -4,6 +4,8 @@
        :ignore-defface for new frame defaults when `unspecified' is
        supplied.
        (Finternal_get_lisp_face_attribute): Hide :ignore-defface.
+       (merge_face_vectors): Don't do :ignore-defface overwriting here.
+       (Finternal_merge_in_global_face): Do it here.
 
 2005-11-20  Juri Linkov  <juri@jurta.org>
 
index 8729441925a63091ba4a815bd6bb0572341103b6..7923686eb5062a45a3a44bbd0f73440f1ef8b309 100644 (file)
@@ -3576,8 +3576,6 @@ merge_face_vectors (f, from, to, named_merge_points)
       {
        if (i == LFACE_HEIGHT_INDEX && !INTEGERP (from[i]))
          to[i] = merge_face_heights (from[i], to[i], to[i]);
-       else if (IGNORE_DEFFACE_P (from[i]))
-         to[i] = Qunspecified;
        else
          to[i] = from[i];
       }
@@ -4056,8 +4054,15 @@ FRAME 0 means change the face on all frames, and change the default
   if (EQ (frame, Qt))
     {
       lface = lface_from_face_name (NULL, face, 1);
+
+      /* When updating face-new-frame-defaults, we put :ignore-defface
+        where the caller wants `unspecified'.  This forces the frame
+        defaults to ignore the defface value.  Otherwise, the defface
+        will take effect, which is generally not what is intended.
+        The value of that attribute will be inherited from some other
+        face during face merging.  See internal_merge_in_global_face. */
       if (UNSPECIFIEDP (value))
-       value = Qignore_defface;
+       value = Qignore_defface;
     }
   else
     {
@@ -4969,7 +4974,10 @@ Default face attributes override any local face attributes.  */)
   gvec = XVECTOR (global_lface)->contents;
   for (i = 1; i < LFACE_VECTOR_SIZE; ++i)
     if (! UNSPECIFIEDP (gvec[i]))
-      lvec[i] = gvec[i];
+      if (IGNORE_DEFFACE_P (gvec[i]))
+       lvec[i] = Qunspecified;
+      else
+       lvec[i] = gvec[i];
 
   return Qnil;
 }