diff options
| author | Kenichi Handa | 2009-04-09 02:40:51 +0000 |
|---|---|---|
| committer | Kenichi Handa | 2009-04-09 02:40:51 +0000 |
| commit | 483670b590fbb3f0ae2b3380aa9351b2d2e19b2c (patch) | |
| tree | 6a5a22c4117b39bb01af8aad775bd8c9aae061d3 | |
| parent | 583ebd632711949ba88e26f341e752ed3ed3f7f7 (diff) | |
| download | emacs-483670b590fbb3f0ae2b3380aa9351b2d2e19b2c.tar.gz emacs-483670b590fbb3f0ae2b3380aa9351b2d2e19b2c.zip | |
(font_put_extra): If VAL is nil, delete the slot for PROP
from the list of extra properties.
(font_clear_prop): Be sure to delete `:name' font property.
| -rw-r--r-- | src/ChangeLog | 6 | ||||
| -rw-r--r-- | src/font.c | 13 |
2 files changed, 18 insertions, 1 deletions
diff --git a/src/ChangeLog b/src/ChangeLog index aca9e8014cf..f5cc4463bea 100644 --- a/src/ChangeLog +++ b/src/ChangeLog | |||
| @@ -1,3 +1,9 @@ | |||
| 1 | 2009-04-09 Kenichi Handa <handa@m17n.org> | ||
| 2 | |||
| 3 | * font.c (font_put_extra): If VAL is nil, delete the slot for PROP | ||
| 4 | from the list of extra properties. | ||
| 5 | (font_clear_prop): Be sure to delete `:name' font property. | ||
| 6 | |||
| 1 | 2009-04-08 YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp> | 7 | 2009-04-08 YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp> |
| 2 | 8 | ||
| 3 | * dispnew.c (redraw_overlapping_rows): Fix detection of | 9 | * dispnew.c (redraw_overlapping_rows): Fix detection of |
diff --git a/src/font.c b/src/font.c index f5a9e3e70e2..bb83fe938a0 100644 --- a/src/font.c +++ b/src/font.c | |||
| @@ -719,6 +719,8 @@ font_put_extra (font, prop, val) | |||
| 719 | { | 719 | { |
| 720 | Lisp_Object prev = Qnil; | 720 | Lisp_Object prev = Qnil; |
| 721 | 721 | ||
| 722 | if (NILP (val)) | ||
| 723 | return val; | ||
| 722 | while (CONSP (extra) | 724 | while (CONSP (extra) |
| 723 | && NILP (Fstring_lessp (prop, XCAR (XCAR (extra))))) | 725 | && NILP (Fstring_lessp (prop, XCAR (XCAR (extra))))) |
| 724 | prev = extra, extra = XCDR (extra); | 726 | prev = extra, extra = XCDR (extra); |
| @@ -729,6 +731,8 @@ font_put_extra (font, prop, val) | |||
| 729 | return val; | 731 | return val; |
| 730 | } | 732 | } |
| 731 | XSETCDR (slot, val); | 733 | XSETCDR (slot, val); |
| 734 | if (NILP (val)) | ||
| 735 | ASET (font, FONT_EXTRA_INDEX, Fdelq (slot, extra)); | ||
| 732 | return val; | 736 | return val; |
| 733 | } | 737 | } |
| 734 | 738 | ||
| @@ -3078,13 +3082,20 @@ font_clear_prop (attrs, prop) | |||
| 3078 | 3082 | ||
| 3079 | if (! FONTP (font)) | 3083 | if (! FONTP (font)) |
| 3080 | return; | 3084 | return; |
| 3085 | if (! NILP (Ffont_get (font, QCname))) | ||
| 3086 | { | ||
| 3087 | font = Fcopy_font_spec (font); | ||
| 3088 | font_put_extra (font, QCname, Qnil); | ||
| 3089 | } | ||
| 3090 | |||
| 3081 | if (NILP (AREF (font, prop)) | 3091 | if (NILP (AREF (font, prop)) |
| 3082 | && prop != FONT_FAMILY_INDEX | 3092 | && prop != FONT_FAMILY_INDEX |
| 3083 | && prop != FONT_FOUNDRY_INDEX | 3093 | && prop != FONT_FOUNDRY_INDEX |
| 3084 | && prop != FONT_WIDTH_INDEX | 3094 | && prop != FONT_WIDTH_INDEX |
| 3085 | && prop != FONT_SIZE_INDEX) | 3095 | && prop != FONT_SIZE_INDEX) |
| 3086 | return; | 3096 | return; |
| 3087 | font = Fcopy_font_spec (font); | 3097 | if (EQ (font, attrs[LFACE_FONT_INDEX])) |
| 3098 | font = Fcopy_font_spec (font); | ||
| 3088 | ASET (font, prop, Qnil); | 3099 | ASET (font, prop, Qnil); |
| 3089 | if (prop == FONT_FAMILY_INDEX || prop == FONT_FOUNDRY_INDEX) | 3100 | if (prop == FONT_FAMILY_INDEX || prop == FONT_FOUNDRY_INDEX) |
| 3090 | { | 3101 | { |