changeset 109035:20747b4a7983

Don't use font names from GConf if font backend can't handle it (bug#6478). * xfns.c (x_default_font_parameter): Try to open font from system before using it (bug#6478). Rename got_from_gconf to got_from_system.
author Jan D. <jan.h.d@swipnet.se>
date Tue, 22 Jun 2010 09:55:08 +0200
parents 3bd67aa6b7e2
children 439784267ae2
files src/ChangeLog src/xfns.c
diffstat 2 files changed, 22 insertions(+), 11 deletions(-) [+]
line wrap: on
line diff
--- a/src/ChangeLog	Tue Jun 22 00:51:46 2010 -0700
+++ b/src/ChangeLog	Tue Jun 22 09:55:08 2010 +0200
@@ -1,3 +1,8 @@
+2010-06-22  Jan Djärv  <jan.h.d@swipnet.se>
+
+	* xfns.c (x_default_font_parameter): Try to open font from system
+	before using it (bug#6478).  Rename got_from_gconf to got_from_system.
+
 2010-06-22  Keith Packard <keithp@keithp.com> (tiny change)
 
 	* font.c (font_parse_fcname): Allow . for sizes like 7.5 (bug#6437).
--- a/src/xfns.c	Tue Jun 22 00:51:46 2010 -0700
+++ b/src/xfns.c	Tue Jun 22 09:55:08 2010 +0200
@@ -3064,8 +3064,8 @@
   struct x_display_info *dpyinfo = FRAME_X_DISPLAY_INFO (f);
   Lisp_Object font_param = x_get_arg (dpyinfo, parms, Qfont, NULL, NULL,
                                       RES_TYPE_STRING);
-  Lisp_Object font;
-  int got_from_gconf = 0;
+  Lisp_Object font = Qnil;
+  int got_from_system = 0;
   if (EQ (font_param, Qunbound))
     font_param = Qnil;
 
@@ -3075,14 +3075,20 @@
          regardless of font-use-system-font because .emacs may not have been
          read yet.  */
       const char *system_font = xsettings_get_system_font ();
-      if (system_font) font_param = make_string (system_font,
-                                                 strlen (system_font));
+      if (system_font)
+        {
+          char *name = xstrdup (system_font);
+          font = font_open_by_name (f, name);
+          got_from_system = ! NILP (font);
+          free (name);
+        }
     }
-  
-  font = !NILP (font_param) ? font_param
-    : x_get_arg (dpyinfo, parms, Qfont, "font", "Font", RES_TYPE_STRING);
-
-  if (! STRINGP (font))
+
+  if (NILP (font))
+      font = !NILP (font_param) ? font_param
+      : x_get_arg (dpyinfo, parms, Qfont, "font", "Font", RES_TYPE_STRING);
+
+  if (! FONTP (font) && ! STRINGP (font))
     {
       char *names[]
 	= {
@@ -3120,8 +3126,8 @@
     }
 
   x_default_parameter (f, parms, Qfont, font,
-                       got_from_gconf ? NULL : "font",
-                       got_from_gconf ? NULL : "Font",
+                       got_from_system ? NULL : "font",
+                       got_from_system ? NULL : "Font",
                        RES_TYPE_STRING);
 }