]> code.delx.au - gnu-emacs/commitdiff
(frame-set-background-mode):
authorMiles Bader <miles@gnu.org>
Wed, 11 Oct 2000 10:02:10 +0000 (10:02 +0000)
committerMiles Bader <miles@gnu.org>
Wed, 11 Oct 2000 10:02:10 +0000 (10:02 +0000)
  Only do anything if the bg-mode or display-type has actually changed.
  Use `dolist'.

lisp/ChangeLog
lisp/faces.el

index a8f2cad62ca6aa81d7fb048dcee6f4e164a1a776..d23eac19c8b09b37757980d0be308a10e0a15f28 100644 (file)
@@ -1,7 +1,8 @@
-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>
 
index 6906c05447fe7ac3b45337346061999ddc80ab2d..c847d9f71a7102f71d35171a350f24bb8c365369 100644 (file)
@@ -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)))))))
 
 
 \f