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 */