changeset 31519:5a14247e8e26

(Finternal_set_lisp_face_attribute): Minor thinko.
author Stefan Monnier <monnier@iro.umontreal.ca>
date Sat, 09 Sep 2000 00:18:25 +0000
parents 1594b23da757
children f9d2d484e1e2
files src/xfaces.c
diffstat 1 files changed, 10 insertions(+), 8 deletions(-) [+]
line wrap: on
line diff
--- a/src/xfaces.c	Fri Sep 08 22:17:17 2000 +0000
+++ b/src/xfaces.c	Sat Sep 09 00:18:25 2000 +0000
@@ -3681,12 +3681,11 @@
     {
       if (!UNSPECIFIEDP (value))
 	{
-	  Lisp_Object test = Qnil;
-
-	  if (!EQ (face, Qdefault))
-	    /* The default face must have an absolute size, otherwise, we do
-	       a test merge with a random height to see if VALUE's ok. */
-	    test = merge_face_heights (value, make_number(10), Qnil, Qnil);
+	  Lisp_Object test =
+	    (EQ (face, Qdefault) ? value :
+	     /* The default face must have an absolute size, otherwise, we do
+		a test merge with a random height to see if VALUE's ok. */
+	     merge_face_heights (value, make_number(10), Qnil, Qnil));
 
 	  if (!INTEGERP(test) || XINT(test) <= 0)
 	    signal_error ("Invalid face height", value);
@@ -4571,13 +4570,16 @@
   Lisp_Object global_lface, local_lface, *gvec, *lvec;
 
   CHECK_LIVE_FRAME (frame, 1);
-
   global_lface = lface_from_face_name (NULL, face, 1);
   local_lface = lface_from_face_name (XFRAME (frame), face, 0);
   if (NILP (local_lface))
     local_lface = Finternal_make_lisp_face (face, frame);
 
-  /* Make every specified global attribute override the local one.  */
+  /* Make every specified global attribute override the local one.
+     BEWARE!! This is only used from `face-set-after-frame-default' where
+     the local frame is defined from default specs in `face-defface-spec'
+     and those should be overridden by global settings.  Hence the strange
+     "global before local" priority.  */
   lvec = XVECTOR (local_lface)->contents;
   gvec = XVECTOR (global_lface)->contents;
   for (i = 1; i < LFACE_VECTOR_SIZE; ++i)