summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/ChangeLog3
-rw-r--r--src/xterm.c6
2 files changed, 8 insertions, 1 deletions
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;