emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Emacs-diffs] emacs/src ChangeLog xfns.c


From: Jan Djärv
Subject: [Emacs-diffs] emacs/src ChangeLog xfns.c
Date: Fri, 10 Jul 2009 17:07:39 +0000

CVSROOT:        /cvsroot/emacs
Module name:    emacs
Changes by:     Jan Djärv <jhd> 09/07/10 17:07:38

Modified files:
        src            : ChangeLog xfns.c 

Log message:
        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.

CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/emacs/src/ChangeLog?cvsroot=emacs&r1=1.7641&r2=1.7642
http://cvs.savannah.gnu.org/viewcvs/emacs/src/xfns.c?cvsroot=emacs&r1=1.741&r2=1.742

Patches:
Index: ChangeLog
===================================================================
RCS file: /cvsroot/emacs/emacs/src/ChangeLog,v
retrieving revision 1.7641
retrieving revision 1.7642
diff -u -b -r1.7641 -r1.7642
--- ChangeLog   10 Jul 2009 11:30:18 -0000      1.7641
+++ ChangeLog   10 Jul 2009 17:07:36 -0000      1.7642
@@ -1,3 +1,9 @@
+2009-07-10  Jan Djärv  <address@hidden>
+
+       * 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  <address@hidden>
 
        * xftfont.c (xftfont_open): Fix typo: FC_RGBA->FC_HINT_STYLE.

Index: xfns.c
===================================================================
RCS file: /cvsroot/emacs/emacs/src/xfns.c,v
retrieving revision 1.741
retrieving revision 1.742
diff -u -b -r1.741 -r1.742
--- xfns.c      3 Jul 2009 11:35:04 -0000       1.741
+++ xfns.c      10 Jul 2009 17:07:38 -0000      1.742
@@ -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
 }
 




reply via email to

[Prev in Thread] Current Thread [Next in Thread]