Mercurial > emacs
diff src/font.c @ 106201:01190029e5d3
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.
author | Jan Djärv <jan.h.d@swipnet.se> |
---|---|
date | Mon, 23 Nov 2009 08:55:08 +0000 |
parents | f2cea199b0c4 |
children | da3ca3481c0b |
line wrap: on
line diff
--- a/src/font.c Mon Nov 23 05:37:34 2009 +0000 +++ b/src/font.c Mon Nov 23 08:55:08 2009 +0000 @@ -218,7 +218,7 @@ 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 @@ 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 @@ 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 @@ 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))