[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Emacs-diffs] emacs/lisp menu-bar.el

From: Chong Yidong
Subject: [Emacs-diffs] emacs/lisp menu-bar.el
Date: Fri, 27 Feb 2009 00:04:59 +0000

CVSROOT:        /sources/emacs
Module name:    emacs
Changes by:     Chong Yidong <cyd>      09/02/27 00:04:59

Modified files:
        lisp           : menu-bar.el 

Log message:
        (menu-set-font): Assign the same font object to all frames (Bug#2476).


Index: menu-bar.el
RCS file: /sources/emacs/emacs/lisp/menu-bar.el,v
retrieving revision 1.350
retrieving revision 1.351
diff -u -b -r1.350 -r1.351
--- menu-bar.el 14 Jan 2009 23:11:12 -0000      1.350
+++ menu-bar.el 27 Feb 2009 00:04:59 -0000      1.351
@@ -637,7 +637,22 @@
     (when font
-      (set-face-attribute 'default nil :font font)
+      ;; We used to call set-face-attribute with a nil argument here,
+      ;; but this does the wrong thing (Bug#2476).  The reason is
+      ;; subtle: when Emacs looks for a font matching the `font'
+      ;; argument, it tries to guess the best matching font by
+      ;; examining the other face attributes.  The attributes for
+      ;; future frames are generally unspecified, so this matching
+      ;; process works poorly.  What we do instead is assign `font' to
+      ;; the selected frame, then use that font object and assign it
+      ;; to all other frames (and to future frames).
+      (set-face-attribute 'default (selected-frame) :font font)
+      (let ((font-object (face-attribute 'default :font)))
+       (dolist (f (frame-list))
+         (and (not (eq f (selected-frame)))
+              (display-graphic-p f)
+              (set-face-attribute 'default f :font font-object)))
+       (set-face-attribute 'default t :font font-object))
       (setq spec (list (list t (face-attr-construct 'default))))
       (put 'default 'customized-face spec)
       (custom-push-theme 'theme-face 'default 'user 'set spec)

reply via email to

[Prev in Thread] Current Thread [Next in Thread]