Commit f161d539 authored by Miles Bader's avatar Miles Bader
Browse files

(frame-set-background-mode):

  Only do anything if the bg-mode or display-type has actually changed.
  Use `dolist'.
parent 1b9a1e9d
2000-10-11 Miles Bader <miles@lsi.nec.co.jp>
2000-10-11 Miles Bader <miles@gnu.org>
* faces.el (frame-set-background-mode): Pay attention to saved
face specs as well as default ones.
face specs as well as default ones. Only do anything if the
bg-mode or display-type has actually changed. Use `dolist'.
2000-10-10 Sam Steingold <sds@gnu.org>
......
......@@ -1308,42 +1308,46 @@ this won't have the expected effect."
(let* ((bg-resource
(and window-system
(x-get-resource ".backgroundMode" "BackgroundMode")))
(bg-mode (cond (frame-background-mode)
((null window-system)
;; No way to determine this automatically (?).
'dark)
(bg-resource
(intern (downcase bg-resource)))
((< (apply '+ (x-color-values
(frame-parameter frame 'background-color)
frame))
;; Just looking at the screen, colors whose
;; values add up to .6 of the white total
;; still look dark to me.
(* (apply '+ (x-color-values "white" frame)) .6))
'dark)
(t 'light)))
(display-type (cond ((null window-system)
(if (tty-display-color-p frame) 'color 'mono))
((x-display-color-p frame)
'color)
((x-display-grayscale-p frame)
'grayscale)
(t 'mono))))
(modify-frame-parameters frame
(list (cons 'background-mode bg-mode)
(cons 'display-type display-type))))
;; For all named faces, choose face specs matching the new frame
;; parameters.
(let ((face-list (face-list)))
(while face-list
(let* ((face (car face-list))
(spec (or (get face 'saved-face)
(get face 'face-defface-spec))))
(when spec
(face-spec-set face spec frame))
(setq face-list (cdr face-list))))))
(bg-mode
(cond (frame-background-mode)
((null window-system)
;; No way to determine this automatically (?).
'dark)
(bg-resource
(intern (downcase bg-resource)))
((< (apply '+ (x-color-values
(frame-parameter frame 'background-color)
frame))
;; Just looking at the screen, colors whose
;; values add up to .6 of the white total
;; still look dark to me.
(* (apply '+ (x-color-values "white" frame)) .6))
'dark)
(t 'light)))
(display-type
(cond ((null window-system)
(if (tty-display-color-p frame) 'color 'mono))
((x-display-color-p frame)
'color)
((x-display-grayscale-p frame)
'grayscale)
(t 'mono)))
(old-bg-mode
(frame-parameter frame 'background-mode))
(old-display-type
(frame-parameter frame 'display-type)))
(unless (and (eq bg-mode old-bg-mode) (eq display-type old-display-type))
(modify-frame-parameters frame
(list (cons 'background-mode bg-mode)
(cons 'display-type display-type)))
;; For all named faces, choose face specs matching the new frame
;; parameters.
(dolist (face (face-list))
(let ((spec (or (get face 'saved-face)
(get face 'face-defface-spec))))
(when spec
(face-spec-set face spec frame)))))))
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment