Mercurial > emacs
changeset 103840:a9bb4a9d0ebd
xfns.c (Fx_select_font): Remember last font selected in
x_last_font_name and use that the next time. Also try the frame
parameter font-parameter as default to the font dialog.
author | Jan Djärv <jan.h.d@swipnet.se> |
---|---|
date | Fri, 10 Jul 2009 17:07:36 +0000 |
parents | 65b0cbb5b077 |
children | bb5ce7283e84 |
files | src/ChangeLog src/xfns.c |
diffstat | 2 files changed, 27 insertions(+), 7 deletions(-) [+] |
line wrap: on
line diff
--- a/src/ChangeLog Fri Jul 10 12:05:14 2009 +0000 +++ b/src/ChangeLog Fri Jul 10 17:07:36 2009 +0000 @@ -1,3 +1,9 @@ +2009-07-10 Jan Djärv <jan.h.d@swipnet.se> + + * xfns.c (Fx_select_font): Remember last font selected in + x_last_font_name and use that the next time. Also try the frame + parameter font-parameter as default to the font dialog. + 2009-07-10 Kenichi Handa <handa@m17n.org> * xftfont.c (xftfont_open): Fix typo: FC_RGBA->FC_HINT_STYLE.
--- a/src/xfns.c Fri Jul 10 12:05:14 2009 +0000 +++ b/src/xfns.c Fri Jul 10 17:07:36 2009 +0000 @@ -208,6 +208,9 @@ int image_cache_refcount, dpyinfo_refcount; #endif +#if defined (USE_GTK) && defined (HAVE_FREETYPE) +char *x_last_font_name; +#endif /* Error if we are not connected to X. */ @@ -5629,6 +5632,9 @@ FRAME_PTR f = check_x_frame (frame); char *name; Lisp_Object default_font, font = Qnil; + Lisp_Object font_param; + char *default_name = NULL; + struct gcpro gcpro1; int count = SPECPDL_INDEX (); check_x (); @@ -5642,21 +5648,28 @@ BLOCK_INPUT; - XSETFONT (default_font, FRAME_FONT (f)); - if (FONTP (default_font)) + GCPRO1(font_param); + font_param = Fframe_parameter (frame, Qfont_param); + + if (x_last_font_name != NULL) + default_name = x_last_font_name; + else if (STRINGP (font_param)) + default_name = SDATA (font_param); + else if (FONTP (default_font)) { - char *default_name = alloca (256); + XSETFONT (default_font, FRAME_FONT (f)); + default_name = alloca (256); if (font_unparse_gtkname (default_font, f, default_name, 256) < 0) default_name = NULL; - name = xg_get_font_name (f, default_name); } - else - name = xg_get_font_name (f, NULL); + + name = xg_get_font_name (f, default_name); if (name) { font = build_string (name); - xfree (name); + g_free (x_last_font_name); + x_last_font_name = name; } UNBLOCK_INPUT; @@ -6028,6 +6041,7 @@ #if defined (USE_GTK) && defined (HAVE_FREETYPE) defsubr (&Sx_select_font); + x_last_font_name = NULL; #endif }