Subject: 23.0.60; (with-ns) application preferences should be global

From: David Reitter <[email-masked]>
Date: Tue, 28 Apr 2009 09:25:36 -0400

Ben,
> 7. Select a font 8. (nothing happens) 9. Click on a currently open  
> emacs frame (not the Preferences window). 10. (the Preferences  
> window loses keyboard focus) 11. Select a font (from the font panel)  
> 12. (The font of the currently focused frame will change.) 13. (The  
> font of the second frame will not change.)

I don't think that the font panel should apply globally (at least not  
in GNU Emacs); also because it gives the user less control.
However, it should set the font for future frames, because there is no  
other way to set that through the GUI (w/o customization buffer).   
Perhaps that would serve as a working compromise.  For that, try the  
code below.

(defun ns-respond-to-change-font ()
   "Respond to changeFont: event, expecting ns-input-font and\n\
ns-input-fontsize of new font."
   (interactive)
   (let ((face 'default))
     (set-face-attribute face t
			:family ns-input-font
			:height (* 10 ns-input-fontsize))
     (set-face-attribute face (selected-frame)
			:family ns-input-font
			:height (* 10 ns-input-fontsize))
     (let ((spec
	   (list (list t (face-attr-construct 'default)))))
       (put face 'customized-face spec)
       (custom-push-theme 'theme-face face 'user 'set spec)
       (put face 'face-modified nil))))