changeset 96079:efbaf6995245

* w32fns.c, xfns.c (Qfont_param): New var. (syms_of_w32fns): Initialize it. (x_default_font_parameter): Record explicit `font' into `font-parameter'. * faces.el (face-set-after-frame-default): Re-apply explicit `font' frame parameters after setting up the `default' face.
author Stefan Monnier <monnier@iro.umontreal.ca>
date Thu, 19 Jun 2008 01:57:19 +0000
parents 00430d3968f2
children 2b046bd8b819
files lisp/ChangeLog lisp/faces.el src/ChangeLog src/w32fns.c src/xfns.c
diffstat 5 files changed, 33 insertions(+), 4 deletions(-) [+]
line wrap: on
line diff
--- a/lisp/ChangeLog	Thu Jun 19 00:43:34 2008 +0000
+++ b/lisp/ChangeLog	Thu Jun 19 01:57:19 2008 +0000
@@ -1,3 +1,8 @@
+2008-06-19  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+	* faces.el (face-set-after-frame-default): Re-apply explicit `font'
+	frame parameters after setting up the `default' face.
+
 2008-06-18  Stefan Monnier  <monnier@iro.umontreal.ca>
 
 	* faces.el (face-set-after-frame-default): Don't exclude `default'.
--- a/lisp/faces.el	Thu Jun 19 00:43:34 2008 +0000
+++ b/lisp/faces.el	Thu Jun 19 01:57:19 2008 +0000
@@ -703,7 +703,7 @@
 	(put (or (get face 'face-alias) face) 'face-modified t))
     (while args
       ;; Don't recursively set the attributes from the frame's font param
-      ;; when we update the frame's font param fro the attributes.
+      ;; when we update the frame's font param from the attributes.
       (let ((inhibit-face-set-after-frame-default t))
 	(if (and (eq (car args) :family)
 		 (stringp (cadr args))
@@ -2018,6 +2018,7 @@
   ;; Find attributes that should be initialized from frame parameters.
   (let ((face-params '((foreground-color default :foreground)
 		       (background-color default :background)
+                       (font-parameter default :font)
 		       (border-color border :background)
 		       (cursor-color cursor :background)
 		       (scroll-bar-foreground scroll-bar :foreground)
--- a/src/ChangeLog	Thu Jun 19 00:43:34 2008 +0000
+++ b/src/ChangeLog	Thu Jun 19 01:57:19 2008 +0000
@@ -1,3 +1,9 @@
+2008-06-19  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+	* w32fns.c, xfns.c (Qfont_param): New var.
+	(syms_of_w32fns): Initialize it.
+	(x_default_font_parameter): Record explicit `font' into `font-parameter'.
+
 2008-06-18  Kenichi Handa  <handa@m17n.org>
 
 	* font.c (font_parse_xlfd): Fix previous change.
@@ -24,9 +30,9 @@
 
 2008-06-18  Jason Rumney  <jasonr@gnu.org>
 
-        * w32font.c (w32font_list, w32font_match): Add logging.
-
-        * w32uniscribe (uniscribe_list, uniscribe_match): Add logging.
+	* w32font.c (w32font_list, w32font_match): Add logging.
+
+	* w32uniscribe (uniscribe_list, uniscribe_match): Add logging.
 
 2008-06-17  Chong Yidong  <cyd@stupidchicken.com>
 
--- a/src/w32fns.c	Thu Jun 19 00:43:34 2008 +0000
+++ b/src/w32fns.c	Thu Jun 19 01:57:19 2008 +0000
@@ -206,6 +206,7 @@
 Lisp_Object Qsuppress_icon;
 Lisp_Object Qundefined_color;
 Lisp_Object Qcancel_timer;
+Lisp_Object Qfont_param;
 Lisp_Object Qhyper;
 Lisp_Object Qsuper;
 Lisp_Object Qmeta;
@@ -4295,6 +4296,12 @@
       if (NILP (font))
         error ("No suitable font was found");
     }
+  else
+    {
+      /* Remember the explicit font parameter, so we can re-apply it after
+	 we've applied the `default' face settings.  */
+      x_set_frame_parameters (f, Fcons (Fcons (Qfont_param, font), Qnil));
+  }
   x_default_parameter (f, parms, Qfont, font, "font", "Font", RES_TYPE_STRING);
 }
 
@@ -8891,6 +8898,7 @@
   DEFSYM (Qctrl, "ctrl");
   DEFSYM (Qcontrol, "control");
   DEFSYM (Qshift, "shift");
+  DEFSYM (Qfont_param, "font-parameter");
   /* This is the end of symbol initialization.  */
 
   /* Text property `display' should be nonsticky by default.  */
--- a/src/xfns.c	Thu Jun 19 00:43:34 2008 +0000
+++ b/src/xfns.c	Thu Jun 19 01:57:19 2008 +0000
@@ -204,6 +204,7 @@
 Lisp_Object Qsuppress_icon;
 Lisp_Object Qundefined_color;
 Lisp_Object Qcompound_text, Qcancel_timer;
+static Lisp_Object Qfont_param;
 
 /* In dispnew.c */
 
@@ -3087,6 +3088,12 @@
       if (NILP (font))
 	error ("No suitable font was found");
     }
+  else
+    {
+      /* Remember the explicit font parameter, so we can re-apply it after
+	 we've applied the `default' face settings.  */
+      x_set_frame_parameters (f, Fcons (Fcons (Qfont_param, font), Qnil));
+  }
   x_default_parameter (f, parms, Qfont, font, "font", "Font", RES_TYPE_STRING);
 }
 
@@ -5854,6 +5861,8 @@
   staticpro (&Qcompound_text);
   Qcancel_timer = intern ("cancel-timer");
   staticpro (&Qcancel_timer);
+  Qfont_param = intern ("font-parameter");
+  staticpro (&Qfont_param);
   /* This is the end of symbol initialization.  */
 
   /* Text property `display' should be nonsticky by default.  */