diff lisp/faces.el @ 18635:d55ebf568fe7

(face-set-after-frame-default): New ubroutine, taken from x-create-frame-with-faces. (x-create-frame-with-faces): Call it. (face-italic-p, face-bold-p): Use equal to compare fonts. (frame-update-faces): Function now a no-op.
author Richard M. Stallman <rms@gnu.org>
date Sat, 05 Jul 1997 19:28:02 +0000
parents 89a58c1d8d2c
children 825fe2874454
line wrap: on
line diff
--- a/lisp/faces.el	Sat Jul 05 19:26:53 1997 +0000
+++ b/lisp/faces.el	Sat Jul 05 19:28:02 1997 +0000
@@ -124,7 +124,7 @@
 If FRAME is omitted or nil, use the selected frame."
   (let ((font (face-font face frame)))
     (if (stringp font)
-	(not (eq font (x-make-font-unbold font)))
+	(not (equal font (x-make-font-unbold font)))
       (memq 'bold font))))
 
 (defun face-italic-p (face &optional frame)
@@ -136,7 +136,7 @@
 If FRAME is omitted or nil, use the selected frame."
   (let ((font (face-font face frame)))
     (if (stringp font)
-	(not (eq font (x-make-font-unitalic font)))
+	(not (equal font (x-make-font-unitalic font)))
       (memq 'italic font))))
 
 (defun face-doc-string (face)
@@ -1211,7 +1211,6 @@
 	(setq frame (x-create-frame (cons '(visibility . nil) parameters)))
 	(unwind-protect
 	    (progn
-
 	      ;; Copy the face alist, copying the face vectors
 	      ;; and emptying out their attributes.
 	      (setq faces
@@ -1251,27 +1250,7 @@
 
 	      (frame-set-background-mode frame)
 
-	      ;; Set up faces from the defface information
-	      (mapcar (lambda (symbol)
-			(let ((spec (or (get symbol 'saved-face)
-					(get symbol 'face-defface-spec))))
-			  (when spec 
-			    (face-spec-set symbol spec frame))))
-		      (face-list))
-
-	      ;; Set up faces from the global face data.
-	      (setq rest faces)
-	      (while rest
-		(let* ((face (car (car rest)))
-		       (global (cdr (assq face global-face-data))))
-		  (face-fill-in face global frame))
-		(setq rest (cdr rest)))
-
-	      ;; Set up faces from the X resources.
-	      (setq rest faces)
-	      (while rest
-		(make-face-x-resource-internal (cdr (car rest)) frame)
-		(setq rest (cdr rest)))
+	      (face-set-after-frame-default frame)
 
 	      ;; Make the frame visible, if desired.
 	      (if (null visibility-spec)
@@ -1282,6 +1261,25 @@
 	      (delete-frame frame)))))
     frame))
 
+;; Update a frame's faces after the frame font changes.
+;; This is called from modify-frame-parameters
+;; as well as from elsewhere in this file.
+(defun face-set-after-frame-default (frame)
+  (let ((rest (frame-face-alist frame)))
+    (while rest
+      ;; Set up each face, first from the defface information,
+      ;; then the global face data, and then the X resources.
+      (let* ((face (car (car rest)))
+	     (spec (or (get face 'saved-face)
+		       (get face 'face-defface-spec)))
+	     (global (cdr (assq face global-face-data)))
+	     (local (cdr (car rest))))
+	(when spec 
+	  (face-spec-set face spec frame))
+	(face-fill-in face global frame)
+	(make-face-x-resource-internal local frame))
+      (setq rest (cdr rest)))))
+
 (defcustom frame-background-mode nil
   "*The brightness of the background.
 Set this to the symbol dark if your background color is dark, light if
@@ -1320,26 +1318,7 @@
 					       (t 'mono)))))))
 
 ;; Update a frame's faces when we change its default font.
-(defun frame-update-faces (frame)
-  (let* ((faces global-face-data)
-	 (rest faces))
-    (while rest
-      (let* ((face (car (car rest)))
-	     (font (face-font face t)))
-	(if (listp font)
-	    (let ((bold (memq 'bold font))
-		  (italic (memq 'italic font)))
-	      ;; Ignore any previous (string-valued) font, it might not even
-	      ;; be the right size anymore.
-	      (set-face-font face nil frame)
-	      (cond ((and bold italic)
-		     (make-face-bold-italic face frame t))
-		    (bold
-		     (make-face-bold face frame t))
-		    (italic
-		     (make-face-italic face frame t)))))
-      (setq rest (cdr rest)))
-    frame)))
+(defun frame-update-faces (frame) nil)
 
 ;; Update the colors of FACE, after FRAME's own colors have been changed.
 ;; This applies only to faces with global color specifications