1
0
mirror of https://git.savannah.gnu.org/git/emacs.git synced 2024-12-27 10:54:40 +00:00

(frame-set-background-mode): Avoid stomping on locally modified faces.

This commit is contained in:
Miles Bader 2000-12-06 05:11:20 +00:00
parent dd7e81b404
commit 6e4240195f
2 changed files with 25 additions and 7 deletions

View File

@ -1,3 +1,8 @@
2000-12-06 Miles Bader <miles@gnu.org>
* faces.el (frame-set-background-mode): Avoid stomping on
locally modified faces.
2000-12-06 Kenichi Handa <handa@etl.go.jp>
* international/fontset.el: Correct the font registries for

View File

@ -1395,13 +1395,26 @@ according to the `background-mode' and `display-type' frame parameters."
(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))
(face-spec-set face (face-user-default-spec face) frame)))))
(let ((locally-modified-faces nil))
;; Before modifying the frame parameters, we collect a list of
;; faces that don't match what their face-spec says they should
;; look like; we then avoid changing these faces below. A
;; negative list is used on the assumption that most faces will
;; be unmodified, so we can avoid consing in the common case.
(dolist (face (face-list))
(when (not (face-spec-match-p face
(face-user-default-spec face)
(selected-frame)))
(push face locally-modified-faces)))
;; Now change to the new frame parameters
(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, unless they have been locally modified.
(dolist (face (face-list))
(unless (memq face locally-modified-faces)
(face-spec-set face (face-user-default-spec face) frame)))))))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;