summaryrefslogtreecommitdiff
path: root/src/font.c
diff options
context:
space:
mode:
authorJan Djärv <jan.h.d@swipnet.se>2009-11-23 08:55:08 +0000
committerJan Djärv <jan.h.d@swipnet.se>2009-11-23 08:55:08 +0000
commit581e51e8918b3ba9b58e67768a1de39ce5f1cbd3 (patch)
treeb210e82974c9e4ab1d3cc1c0a9e86348a425526b /src/font.c
parent0f202d5d8fa1f0dea9c1e5e52e6ad66e4848aa75 (diff)
downloademacs-581e51e8918b3ba9b58e67768a1de39ce5f1cbd3.tar.gz
emacs-581e51e8918b3ba9b58e67768a1de39ce5f1cbd3.tar.bz2
emacs-581e51e8918b3ba9b58e67768a1de39ce5f1cbd3.zip
Set Xft defaults if no XSETTING is found, better default for Gtk+ font dialog.
* xfns.c (Fx_select_font): Try to convert Fontconfig name to Gtk name because that is what Gtk+ font dialog understands. * font.c (font_make_object, Fcopy_font_spec): Use Fcopy_alist instead of Fcopy_sequence. (font_open_by_name): Put name given into QCname for font-object returned. * frame.c (x_set_font): Save original font name as frame parameter font-parameter. * xsettings.c (set_default_xft_settings): New function. (init_xfd_settings): Call set_default_xft_settings if no XSETTINGS window is found.
Diffstat (limited to 'src/font.c')
-rw-r--r--src/font.c22
1 files changed, 14 insertions, 8 deletions
diff --git a/src/font.c b/src/font.c
index aa07c7805d1..5aa14ca4211 100644
--- a/src/font.c
+++ b/src/font.c
@@ -218,7 +218,7 @@ font_make_object (size, entity, pixelsize)
font->props[i] = AREF (entity, i);
if (! NILP (AREF (entity, FONT_EXTRA_INDEX)))
font->props[FONT_EXTRA_INDEX]
- = Fcopy_sequence (AREF (entity, FONT_EXTRA_INDEX));
+ = Fcopy_alist (AREF (entity, FONT_EXTRA_INDEX));
}
if (size > 0)
font->props[FONT_SIZE_INDEX] = make_number (pixelsize);
@@ -721,10 +721,12 @@ font_put_extra (font, prop, val)
while (CONSP (extra)
&& NILP (Fstring_lessp (prop, XCAR (XCAR (extra)))))
prev = extra, extra = XCDR (extra);
- if (NILP (prev))
- ASET (font, FONT_EXTRA_INDEX, Fcons (Fcons (prop, val), extra));
- else
- XSETCDR (prev, Fcons (Fcons (prop, val), extra));
+
+ if (NILP (prev))
+ ASET (font, FONT_EXTRA_INDEX, Fcons (Fcons (prop, val), extra));
+ else
+ XSETCDR (prev, Fcons (Fcons (prop, val), extra));
+
return val;
}
XSETCDR (slot, val);
@@ -3600,12 +3602,16 @@ font_open_by_name (f, name)
char *name;
{
Lisp_Object args[2];
- Lisp_Object spec;
+ Lisp_Object spec, ret;
args[0] = QCname;
args[1] = make_unibyte_string (name, strlen (name));
spec = Ffont_spec (2, args);
- return font_open_by_spec (f, spec);
+ ret = font_open_by_spec (f, spec);
+ /* Do not loose name originally put in. */
+ font_put_extra (ret, QCname, args[1]);
+
+ return ret;
}
@@ -4137,7 +4143,7 @@ DEFUN ("copy-font-spec", Fcopy_font_spec, Scopy_font_spec, 1, 1, 0,
new_spec = font_make_spec ();
for (i = 1; i < FONT_EXTRA_INDEX; i++)
ASET (new_spec, i, AREF (font, i));
- extra = Fcopy_sequence (AREF (font, FONT_EXTRA_INDEX));
+ extra = Fcopy_alist (AREF (font, FONT_EXTRA_INDEX));
/* We must remove :font-entity property. */
for (prev = Qnil, tail = extra; CONSP (tail); prev = tail, tail = XCDR (tail))
if (EQ (XCAR (XCAR (tail)), QCfont_entity))