From: Kenichi Handa Date: Fri, 23 May 2008 05:33:24 +0000 (+0000) Subject: (x_draw_glyph_string): Be sure to draw underline within the current X-Git-Tag: emacs-pretest-23.0.90~5339 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=90dc78a36ea3c20e8c87b27f7d96b86262d292bb;p=emacs.git (x_draw_glyph_string): Be sure to draw underline within the current line area. --- diff --git a/src/ChangeLog b/src/ChangeLog index 3dd1a95177e..62ea887f9f0 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -4,7 +4,8 @@ s->underline_thickness and s->underline_position. * xterm.c (x_draw_glyph_string): Be sure to update - s->underline_thickness and s->underline_position. + s->underline_thickness and s->underline_position. Be sore to draw + underline within the current line area. * fontset.c: Delete unused variables and add casting for char * throughout the file. diff --git a/src/xterm.c b/src/xterm.c index b4c49d4085f..b2683298ca0 100644 --- a/src/xterm.c +++ b/src/xterm.c @@ -2743,6 +2743,12 @@ x_draw_glyph_string (s) position = (s->font->descent + 1) / 2; } } + /* Check the sanity of thickness and position. We should + avoid drawing underline out of the current line area. */ + if (s->y + s->height <= s->ybase + position) + position = s->y + s->height - 1; + if (s->y + s->height < s->ybase + position + thickness) + thickness = (s->y + s->height) - (s->ybase + position); s->underline_thickness = thickness; s->underline_position = position; y = s->ybase + position;