Mercurial > emacs
changeset 96585:32d47016e1c4
(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.
author | Chong Yidong <cyd@stupidchicken.com> |
---|---|
date | Thu, 10 Jul 2008 03:32:53 +0000 |
parents | 601491fd81ae |
children | 8ae70a323343 |
files | lisp/faces.el |
diffstat | 1 files changed, 16 insertions(+), 9 deletions(-) [+] |
line wrap: on
line diff
--- 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.