Mercurial > emacs
changeset 95795:e01da5f86514
(Fx_font_dialog): New function.
author | Chong Yidong <cyd@stupidchicken.com> |
---|---|
date | Tue, 10 Jun 2008 20:56:58 +0000 |
parents | e4d692886628 |
children | 6e0425f2bc3d |
files | src/xfns.c |
diffstat | 1 files changed, 45 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- a/src/xfns.c Tue Jun 10 20:56:15 2008 +0000 +++ b/src/xfns.c Tue Jun 10 20:56:58 2008 +0000 @@ -5628,6 +5628,47 @@ return unbind_to (count, decoded_file); } + +#ifdef HAVE_FREETYPE + +DEFUN ("x-font-dialog", Fx_font_dialog, Sx_font_dialog, 0, 0, 0, + doc: /* Read a font name using a font selection dialog. +The font name is returned as a string. */) + () +{ + FRAME_PTR f = SELECTED_FRAME (); + char *fontname; + Lisp_Object font = Qnil; + int count = SPECPDL_INDEX (); + + check_x (); + + if (popup_activated ()) + error ("Trying to use a menu from within a menu-entry"); + + /* Prevent redisplay. */ + specbind (Qinhibit_redisplay, Qt); + record_unwind_protect (clean_up_dialog, Qnil); + + BLOCK_INPUT; + + fontname = xg_get_font_name (f, NULL); + + if (fontname) + { + font = build_string (fontname); + xfree (fontname); + } + + UNBLOCK_INPUT; + + if (NILP (font)) + Fsignal (Qquit, Qnil); + + return unbind_to (count, font); +} +#endif /* HAVE_FREETYPE */ + #endif /* USE_GTK */ @@ -5993,6 +6034,10 @@ #if defined (USE_MOTIF) || defined (USE_GTK) defsubr (&Sx_file_dialog); #endif + +#ifdef USE_GTK + defsubr (&Sx_font_dialog); +#endif } #endif /* HAVE_X_WINDOWS */