# HG changeset patch # User Chong Yidong # Date 1213131418 0 # Node ID e01da5f86514a1cfc7aa0c6057a732f1b6e957ce # Parent e4d6928866287cc006c0790c5c79b38ea4c3d588 (Fx_font_dialog): New function. diff -r e4d692886628 -r e01da5f86514 src/xfns.c --- 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 */