From: Kenichi Handa Date: Thu, 9 Apr 2009 02:40:51 +0000 (+0000) Subject: (font_put_extra): If VAL is nil, delete the slot for PROP X-Git-Tag: emacs-pretest-23.0.93~190 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=483670b590fbb3f0ae2b3380aa9351b2d2e19b2c;p=emacs.git (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. --- diff --git a/src/ChangeLog b/src/ChangeLog index aca9e8014cf..f5cc4463bea 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,9 @@ +2009-04-09 Kenichi Handa + + * font.c (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. + 2009-04-08 YAMAMOTO Mitsuharu * 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) { Lisp_Object prev = Qnil; + if (NILP (val)) + return val; while (CONSP (extra) && NILP (Fstring_lessp (prop, XCAR (XCAR (extra))))) prev = extra, extra = XCDR (extra); @@ -729,6 +731,8 @@ font_put_extra (font, prop, val) return val; } XSETCDR (slot, val); + if (NILP (val)) + ASET (font, FONT_EXTRA_INDEX, Fdelq (slot, extra)); return val; } @@ -3078,13 +3082,20 @@ font_clear_prop (attrs, prop) if (! FONTP (font)) return; + if (! NILP (Ffont_get (font, QCname))) + { + font = Fcopy_font_spec (font); + font_put_extra (font, QCname, Qnil); + } + if (NILP (AREF (font, prop)) && prop != FONT_FAMILY_INDEX && prop != FONT_FOUNDRY_INDEX && prop != FONT_WIDTH_INDEX && prop != FONT_SIZE_INDEX) return; - font = Fcopy_font_spec (font); + if (EQ (font, attrs[LFACE_FONT_INDEX])) + font = Fcopy_font_spec (font); ASET (font, prop, Qnil); if (prop == FONT_FAMILY_INDEX || prop == FONT_FOUNDRY_INDEX) {