From: Jan Djärv Date: Fri, 20 Nov 2009 09:44:42 +0000 (+0000) Subject: Always suggest system font because .emacs may not have been read yet. X-Git-Tag: emacs-pretest-23.1.90~303 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=0d1d0d26a9f5634372da7f5b624e46fc2d54998b;p=emacs.git Always suggest system font because .emacs may not have been read yet. * xfns.c (x_default_font_parameter): Call xsettings_get_system_font. * xsettings.h: Declare xsettings_get_system_font. * xsettings.c (xsettings_get_system_font): New function. (init_gconf): No use initiating gconf unless we have Xft also. (syms_of_xsettings): Only provide system-font-setting if HAVE_XFT and HAVE_GCONF. --- diff --git a/src/ChangeLog b/src/ChangeLog index e1cce91b646..cefcd6145f8 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,5 +1,14 @@ 2009-11-20 Jan Djärv + * xfns.c (x_default_font_parameter): Call xsettings_get_system_font. + + * xsettings.h: Declare xsettings_get_system_font. + + * xsettings.c (xsettings_get_system_font): New function. + (init_gconf): No use initiating gconf unless we have Xft also. + (syms_of_xsettings): Only provide system-font-setting if HAVE_XFT and + HAVE_GCONF. + * gtkutil.c (xg_modify_menubar_widgets): If menubar is totally empty add a blank entry so it doesn't collapse into nothing. diff --git a/src/xfns.c b/src/xfns.c index 3d7e89c19bd..0ae6f95b30b 100644 --- a/src/xfns.c +++ b/src/xfns.c @@ -3031,14 +3031,21 @@ x_default_font_parameter (f, parms) Lisp_Object font; int got_from_gconf = 0; if (EQ (font_param, Qunbound)) + font_param = Qnil; + + if (NILP (font_param)) { - font_param = Ffont_get_system_font(); - got_from_gconf = !NILP (font_param); + /* System font takes precedendce over X resources. We must suggest this + 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)); } - + font = !NILP (font_param) ? font_param : x_get_arg (dpyinfo, parms, Qfont, "font", "Font", RES_TYPE_STRING); - + if (! STRINGP (font)) { char *names[] diff --git a/src/xsettings.c b/src/xsettings.c index 71a7eaa86ca..8ce24743260 100644 --- a/src/xsettings.c +++ b/src/xsettings.c @@ -498,7 +498,7 @@ xft_settings_event (dpyinfo, event) static void init_gconf () { -#ifdef HAVE_GCONF +#if defined (HAVE_GCONF) && defined (HAVE_XFT) int i; char *s; /* Should be enough, this is called at startup */ @@ -556,7 +556,7 @@ init_gconf () init_sigio (i); #endif /* ! defined (SIGIO) */ } -#endif /* HAVE_GCONF */ +#endif /* HAVE_GCONF && HAVE_XFT */ } static void @@ -605,6 +605,11 @@ xsettings_initialize (dpyinfo) init_xfd_settings (dpyinfo); } +const char * +xsettings_get_system_font () +{ + return current_mono_font; +} DEFUN ("font-get-system-font", Ffont_get_system_font, Sfont_get_system_font, 0, 0, 0, @@ -635,10 +640,10 @@ syms_of_xsettings () doc: /* *Non-nil means to use the system defined font. */); use_system_font = 0; +#ifdef HAVE_XFT + Fprovide (intern_c_string ("font-render-setting"), Qnil); #ifdef HAVE_GCONF Fprovide (intern_c_string ("system-font-setting"), Qnil); #endif -#ifdef HAVE_XFT - Fprovide (intern_c_string ("font-render-setting"), Qnil); #endif } diff --git a/src/xsettings.h b/src/xsettings.h index 503116bceec..d1b3992bffe 100644 --- a/src/xsettings.h +++ b/src/xsettings.h @@ -24,6 +24,7 @@ EXFUN (Ffont_get_system_font, 0); extern void xsettings_initialize P_ ((struct x_display_info *dpyinfo)); extern void xft_settings_event P_ ((struct x_display_info *dpyinfo, XEvent *)); +extern const char *xsettings_get_system_font P_ ((void)); #endif /* XSETTINGS_H */