diff options
author | Jan Djärv <jan.h.d@swipnet.se> | 2009-11-23 08:55:08 +0000 |
---|---|---|
committer | Jan Djärv <jan.h.d@swipnet.se> | 2009-11-23 08:55:08 +0000 |
commit | 581e51e8918b3ba9b58e67768a1de39ce5f1cbd3 (patch) | |
tree | b210e82974c9e4ab1d3cc1c0a9e86348a425526b /src/font.c | |
parent | 0f202d5d8fa1f0dea9c1e5e52e6ad66e4848aa75 (diff) | |
download | emacs-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.c | 22 |
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)) |