]> code.delx.au - gnu-emacs/commitdiff
(produce_stretch_glyph): Include face box in stretch glyph size.
authorKim F. Storm <storm@cua.dk>
Mon, 24 Apr 2006 00:08:07 +0000 (00:08 +0000)
committerKim F. Storm <storm@cua.dk>
Mon, 24 Apr 2006 00:08:07 +0000 (00:08 +0000)
src/xdisp.c

index 131ce4b04d9d0e7467932acbf65adad795871f7f..9c9031fa44395544520a1512c19a012a12c07290 100644 (file)
@@ -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);
 }