(x_set_font): Handle the case that ARG is a cons.
authorKenichi Handa <handa@m17n.org>
Thu, 19 Mar 2009 06:51:07 +0000 (06:51 +0000)
committerKenichi Handa <handa@m17n.org>
Thu, 19 Mar 2009 06:51:07 +0000 (06:51 +0000)
src/ChangeLog
src/frame.c

index 33be1d2..7017875 100644 (file)
@@ -1,3 +1,11 @@
+2009-03-19  Kenichi Handa  <handa@m17n.org>
+
+       * fontset.c (Fset_fontset_font): When a spec of ASCII font is
+       changed, use font_load_for_lface to get a new font object.  Call
+       free_realized_fontset after handling ASCII font change.
+
+       * frame.c (x_set_font): Handle the case that ARG is a cons.
+
 2009-03-19  Glenn Morris  <rgm@gnu.org>
 
        * fileio.c (Fsubstitute_in_file_name): Doc fix.
index 5273304..a501e4d 100644 (file)
@@ -3372,8 +3372,9 @@ x_set_font (f, arg, oldval)
      fail to use ARG as the new parameter value.  */
   store_frame_param (f, Qfont, oldval);
 
-  /* ARG is a fontset name, a font name, or a font object.
-     In the last case, this function never fail.  */
+  /* ARG is a fontset name, a font name, a cons of fontset name and a
+     font object, or a font object.  In the last case, this function
+     never fail.  */
   if (STRINGP (arg))
     {
       fontset = fs_query_fontset (arg, 0);
@@ -3396,6 +3397,17 @@ x_set_font (f, arg, oldval)
       else
        error ("The default fontset can't be used for a frame font");
     }
+  else if (CONSP (arg) && STRINGP (XCAR (arg)) && FONT_OBJECT_P (XCDR (arg)))
+    {
+      /* This is the case that the ASCII font of F's fontset XCAR
+        (arg) is changed to the font XCDR (arg) by
+        `set-fontset-font'.  */
+      fontset = fs_query_fontset (XCAR (arg), 0);
+      if (fontset < 0)
+       error ("Unknown fontset: %s", SDATA (XCAR (arg)));
+      font_object = XCDR (arg);
+      arg = AREF (font_object, FONT_NAME_INDEX);
+    }
   else if (FONT_OBJECT_P (arg))
     {
       font_object = arg;