comparison lisp/faces.el @ 109089:bd58a72bb9bb

Fix application of default-frame-alist (Bug#5378). * lisp/frame.el (make-frame): Add default-frame-alist to the PARAMETERS argument passed to frame-creation-function (Bug#5378). * lisp/faces.el (x-handle-named-frame-geometry) (x-handle-reverse-video, x-create-frame-with-faces) (face-set-after-frame-default, tty-create-frame-with-faces): Don't separately consult default-frame-alist. It is now passed as the PARAMETER argument. * src/frame.c (get_future_frame_param, Fmake_terminal_frame): Don't check default-frame-alist.
author Chong Yidong <cyd@stupidchicken.com>
date Wed, 30 Jun 2010 20:14:17 -0400
parents 7c79bc199c73
children d5e4b1b34988
comparison
equal deleted inserted replaced
109088:05a72c8a402b 109089:bd58a72bb9bb
1946 1946
1947 (defun x-handle-named-frame-geometry (parameters) 1947 (defun x-handle-named-frame-geometry (parameters)
1948 "Add geometry parameters for a named frame to parameter list PARAMETERS. 1948 "Add geometry parameters for a named frame to parameter list PARAMETERS.
1949 Value is the new parameter list." 1949 Value is the new parameter list."
1950 ;; Note that `x-resource-name' has a global meaning. 1950 ;; Note that `x-resource-name' has a global meaning.
1951 (let ((x-resource-name (or (cdr (assq 'name parameters)) 1951 (let ((x-resource-name (cdr (assq 'name parameters))))
1952 (cdr (assq 'name default-frame-alist)))))
1953 (when x-resource-name 1952 (when x-resource-name
1954 ;; Before checking X resources, we must have an X connection. 1953 ;; Before checking X resources, we must have an X connection.
1955 (or (window-system) 1954 (or (window-system)
1956 (x-display-list) 1955 (x-display-list)
1957 (x-open-connection (or (cdr (assq 'display parameters)) 1956 (x-open-connection (or (cdr (assq 'display parameters))
1958 x-display-name))) 1957 x-display-name)))
1959 (let (res-geometry parsed) 1958 (let (res-geometry parsed)
1960 (and (setq res-geometry (x-get-resource "geometry" "Geometry")) 1959 (and (setq res-geometry (x-get-resource "geometry" "Geometry"))
1961 (setq parsed (x-parse-geometry res-geometry)) 1960 (setq parsed (x-parse-geometry res-geometry))
1962 (setq parameters 1961 (setq parameters
1963 (append parameters default-frame-alist parsed 1962 (append parameters parsed
1964 ;; If the resource specifies a position, 1963 ;; If the resource specifies a position,
1965 ;; take note of that. 1964 ;; take note of that.
1966 (if (or (assq 'top parsed) (assq 'left parsed)) 1965 (if (or (assq 'top parsed) (assq 'left parsed))
1967 '((user-position . t) (user-size . t))))))))) 1966 '((user-position . t) (user-size . t)))))))))
1968 parameters) 1967 parameters)
1970 1969
1971 (defun x-handle-reverse-video (frame parameters) 1970 (defun x-handle-reverse-video (frame parameters)
1972 "Handle the reverse-video frame parameter and X resource. 1971 "Handle the reverse-video frame parameter and X resource.
1973 `x-create-frame' does not handle this one." 1972 `x-create-frame' does not handle this one."
1974 (when (cdr (or (assq 'reverse parameters) 1973 (when (cdr (or (assq 'reverse parameters)
1975 (assq 'reverse default-frame-alist)
1976 (let ((resource (x-get-resource "reverseVideo" 1974 (let ((resource (x-get-resource "reverseVideo"
1977 "ReverseVideo"))) 1975 "ReverseVideo")))
1978 (if resource 1976 (if resource
1979 (cons nil (member (downcase resource) 1977 (cons nil (member (downcase resource)
1980 '("on" "true"))))))) 1978 '("on" "true")))))))
1996 1994
1997 (declare-function x-create-frame "xfns.c" (parms)) 1995 (declare-function x-create-frame "xfns.c" (parms))
1998 (declare-function x-setup-function-keys "term/x-win" (frame)) 1996 (declare-function x-setup-function-keys "term/x-win" (frame))
1999 1997
2000 (defun x-create-frame-with-faces (&optional parameters) 1998 (defun x-create-frame-with-faces (&optional parameters)
2001 "Create a frame from optional frame parameters PARAMETERS. 1999 "Create and return a frame with frame parameters PARAMETERS.
2002 Parameters not specified by PARAMETERS are taken from 2000 If PARAMETERS specify a frame name, handle X geometry resources
2003 `default-frame-alist'. If PARAMETERS specify a frame name, 2001 for that name. If PARAMETERS includes a `reverse' parameter, or
2004 handle X geometry resources for that name. If either PARAMETERS 2002 the X resource ``reverseVideo'' is present, handle that."
2005 or `default-frame-alist' contains a `reverse' parameter, or
2006 the X resource ``reverseVideo'' is present, handle that.
2007 Value is the new frame created."
2008 (setq parameters (x-handle-named-frame-geometry parameters)) 2003 (setq parameters (x-handle-named-frame-geometry parameters))
2009 (let* ((params (copy-tree parameters)) 2004 (let* ((params (copy-tree parameters))
2010 (visibility-spec (assq 'visibility parameters)) 2005 (visibility-spec (assq 'visibility parameters))
2011 (delayed-params '(foreground-color background-color font 2006 (delayed-params '(foreground-color background-color font
2012 border-color cursor-color mouse-color 2007 border-color cursor-color mouse-color
2033 (defun face-set-after-frame-default (frame &optional parameters) 2028 (defun face-set-after-frame-default (frame &optional parameters)
2034 "Initialize the frame-local faces of FRAME. 2029 "Initialize the frame-local faces of FRAME.
2035 Calculate the face definitions using the face specs, custom theme 2030 Calculate the face definitions using the face specs, custom theme
2036 settings, X resources, and `face-new-frame-defaults'. 2031 settings, X resources, and `face-new-frame-defaults'.
2037 Finally, apply any relevant face attributes found amongst the 2032 Finally, apply any relevant face attributes found amongst the
2038 frame parameters in PARAMETERS and `default-frame-alist'." 2033 frame parameters in PARAMETERS."
2039 (dolist (face (nreverse (face-list))) ;Why reverse? --Stef 2034 (dolist (face (nreverse (face-list))) ;Why reverse? --Stef
2040 (condition-case () 2035 (condition-case ()
2041 (progn 2036 (progn
2042 ;; Initialize faces from face spec and custom theme. 2037 ;; Initialize faces from face spec and custom theme.
2043 (face-spec-recalc face frame) 2038 (face-spec-recalc face frame)
2059 (scroll-bar-foreground scroll-bar :foreground) 2054 (scroll-bar-foreground scroll-bar :foreground)
2060 (scroll-bar-background scroll-bar :background) 2055 (scroll-bar-background scroll-bar :background)
2061 (mouse-color mouse :background)))) 2056 (mouse-color mouse :background))))
2062 (dolist (param face-params) 2057 (dolist (param face-params)
2063 (let* ((param-name (nth 0 param)) 2058 (let* ((param-name (nth 0 param))
2064 (value (cdr (or (assq param-name parameters) 2059 (value (cdr (assq param-name parameters))))
2065 (assq param-name default-frame-alist)))))
2066 (if value 2060 (if value
2067 (set-face-attribute (nth 1 param) frame 2061 (set-face-attribute (nth 1 param) frame
2068 (nth 2 param) value)))))) 2062 (nth 2 param) value))))))
2069 2063
2070 (defun tty-handle-reverse-video (frame parameters) 2064 (defun tty-handle-reverse-video (frame parameters)
2071 "Handle the reverse-video frame parameter for terminal frames." 2065 "Handle the reverse-video frame parameter for terminal frames."
2072 (when (cdr (or (assq 'reverse parameters) 2066 (when (cdr (assq 'reverse parameters))
2073 (assq 'reverse default-frame-alist)))
2074 (let* ((params (frame-parameters frame)) 2067 (let* ((params (frame-parameters frame))
2075 (bg (cdr (assq 'foreground-color params))) 2068 (bg (cdr (assq 'foreground-color params)))
2076 (fg (cdr (assq 'background-color params)))) 2069 (fg (cdr (assq 'background-color params))))
2077 (modify-frame-parameters frame 2070 (modify-frame-parameters frame
2078 (list (cons 'foreground-color fg) 2071 (list (cons 'foreground-color fg)
2084 (modify-frame-parameters frame 2077 (modify-frame-parameters frame
2085 (list (cons 'cursor-color fg))))))) 2078 (list (cons 'cursor-color fg)))))))
2086 2079
2087 2080
2088 (defun tty-create-frame-with-faces (&optional parameters) 2081 (defun tty-create-frame-with-faces (&optional parameters)
2089 "Create a frame from optional frame parameters PARAMETERS. 2082 "Create and return a frame from optional frame parameters PARAMETERS.
2090 Parameters not specified by PARAMETERS are taken from 2083 If PARAMETERS contains a `reverse' parameter, handle that."
2091 `default-frame-alist'. If either PARAMETERS or `default-frame-alist'
2092 contains a `reverse' parameter, handle that. Value is the new frame
2093 created."
2094 (let ((frame (make-terminal-frame parameters)) 2084 (let ((frame (make-terminal-frame parameters))
2095 success) 2085 success)
2096 (unwind-protect 2086 (unwind-protect
2097 (with-selected-frame frame 2087 (with-selected-frame frame
2098 (tty-handle-reverse-video frame (frame-parameters frame)) 2088 (tty-handle-reverse-video frame (frame-parameters frame))