From: Kim F. Storm Date: Mon, 24 Apr 2006 00:08:07 +0000 (+0000) Subject: (produce_stretch_glyph): Include face box in stretch glyph size. X-Git-Tag: emacs-pretest-22.0.90~2971 X-Git-Url: https://code.delx.au/gnu-emacs/commitdiff_plain/536fde8e097a9446bf79d878c60f0f8fd3cbd16e (produce_stretch_glyph): Include face box in stretch glyph size. --- diff --git a/src/xdisp.c b/src/xdisp.c index 131ce4b04d..9c9031fa44 100644 --- a/src/xdisp.c +++ b/src/xdisp.c @@ -19865,12 +19865,30 @@ produce_stretch_glyph (it) && 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) + if (width > 0 && height > 0) { - 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 (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 @@ produce_stretch_glyph (it) 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); }