Mercurial > emacs
changeset 70204:108b30a5e289
(produce_stretch_glyph): Include face box in stretch glyph size.
author | Kim F. Storm <storm@cua.dk> |
---|---|
date | Mon, 24 Apr 2006 00:08:07 +0000 |
parents | adfb4457bcec |
children | ea7d882a4a09 |
files | src/xdisp.c |
diffstat | 1 files changed, 24 insertions(+), 20 deletions(-) [+] |
line wrap: on
line diff
--- a/src/xdisp.c Mon Apr 24 00:07:47 2006 +0000 +++ b/src/xdisp.c Mon Apr 24 00:08:07 2006 +0000 @@ -19865,12 +19865,30 @@ && it->current_x + width > it->last_visible_x) width = it->last_visible_x - it->current_x - 1; - if (width > 0 && height > 0 && it->glyph_row) - { - Lisp_Object object = it->stack[it->sp - 1].string; - if (!STRINGP (object)) - object = it->w->buffer; - append_stretch_glyph (it, object, width, height, ascent); + if (width > 0 && height > 0) + { + + if (face->box != FACE_NO_BOX && face->box_line_width != 0) + { + if (face->box_line_width > 0) + { + ascent += face->box_line_width; + height += face->box_line_width * 2; + } + + if (it->start_of_box_run_p) + width += abs (face->box_line_width); + if (it->end_of_box_run_p) + width += abs (face->box_line_width); + } + + if (it->glyph_row) + { + Lisp_Object object = it->stack[it->sp - 1].string; + if (!STRINGP (object)) + object = it->w->buffer; + append_stretch_glyph (it, object, width, height, ascent); + } } it->pixel_width = width; @@ -19878,20 +19896,6 @@ it->descent = it->phys_descent = height - it->ascent; it->nglyphs = width > 0 && height > 0 ? 1 : 0; - if (width > 0 && height > 0 && face->box != FACE_NO_BOX) - { - if (face->box_line_width > 0) - { - it->ascent += face->box_line_width; - it->descent += face->box_line_width; - } - - if (it->start_of_box_run_p) - it->pixel_width += abs (face->box_line_width); - if (it->end_of_box_run_p) - it->pixel_width += abs (face->box_line_width); - } - take_vertical_position_into_account (it); }