# HG changeset patch # User Chong Yidong # Date 1215660773 0 # Node ID 32d47016e1c48ab9af616ed2ebedf8ed6fe0ccc2 # Parent 601491fd81ae83c8a3ad485b3430030c8d0ee94e (x-create-frame-with-faces): Don't pass parameters that are set later to x-create-frame. (face-set-after-frame-default): Apply X resources for non-default faces. diff -r 601491fd81ae -r 32d47016e1c4 lisp/faces.el --- a/lisp/faces.el Thu Jul 10 03:31:53 2008 +0000 +++ b/lisp/faces.el Thu Jul 10 03:32:53 2008 +0000 @@ -1985,9 +1985,16 @@ the X resource ``reverseVideo'' is present, handle that. Value is the new frame created." (setq parameters (x-handle-named-frame-geometry parameters)) - (let ((visibility-spec (assq 'visibility parameters)) - (frame (x-create-frame `((visibility . nil) . ,parameters))) - success) + (let* ((params (copy-tree parameters)) + (visibility-spec (assq 'visibility parameters)) + (delayed-params '(foreground-color background-color font + border-color cursor-color mouse-color + visibility scroll-bar-foreground + scroll-bar-background)) + frame success) + (dolist (param delayed-params) + (setq params (assq-delete-all param params))) + (setq frame (x-create-frame `((visibility . nil) . ,params))) (unwind-protect (progn (x-setup-function-keys frame) @@ -2009,19 +2016,19 @@ (defun face-set-after-frame-default (frame &optional parameters) "Initialize the frame-local faces of FRAME. Calculate the face definitions using the face specs, custom theme -settings, and `face-new-frame-defaults' (in that order). +settings, X resources, and `face-new-frame-defaults'. Finally, apply any relevant face attributes found amongst the frame parameters in PARAMETERS and `default-frame-alist'." (dolist (face (nreverse (face-list))) (condition-case () - ;; We used to apply X resources within this loop, because X - ;; resources could be frame-specific. We don't do that any - ;; more, because this interacts poorly with specifying faces - ;; via frame parameters and Lisp faces. (X resouces for Emacs - ;; as a whole are applied during x-create-frame.) (progn ;; Initialize faces from face spec and custom theme. (face-spec-recalc face frame) + ;; X resouces for the default face are applied during + ;; x-create-frame. + (and (not (eq face 'default)) + (memq (window-system frame) '(x w32 mac)) + (make-face-x-resource-internal face frame)) ;; Apply attributes specified by face-new-frame-defaults (internal-merge-in-global-face face frame)) ;; Don't let invalid specs prevent frame creation.