]> git.eshelyaron.com Git - emacs.git/commitdiff
(Fx_font_dialog): New function.
authorChong Yidong <cyd@stupidchicken.com>
Tue, 10 Jun 2008 20:56:58 +0000 (20:56 +0000)
committerChong Yidong <cyd@stupidchicken.com>
Tue, 10 Jun 2008 20:56:58 +0000 (20:56 +0000)
src/xfns.c

index 875c1599fe583be595bfa679c0bb0cad88fbda5f..df350a36e93b7ccdfdcd5eb131e419df74c12346 100644 (file)
@@ -5628,6 +5628,47 @@ directories.  */)
   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 */
 
 \f
@@ -5993,6 +6034,10 @@ the tool bar buttons.  */);
 #if defined (USE_MOTIF) || defined (USE_GTK)
   defsubr (&Sx_file_dialog);
 #endif
+
+#ifdef USE_GTK
+  defsubr (&Sx_font_dialog);
+#endif
 }
 
 #endif /* HAVE_X_WINDOWS */