aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJesse Luehrs <doy@tozt.net>2014-04-15 22:17:11 -0400
committerJesse Luehrs <doy@tozt.net>2014-04-15 22:17:11 -0400
commit037366ce1fa33dd7573f206230994f94a0746e3e (patch)
treed6a7710d95bb5a1093deef60ff1d6c0c320bbdb9
parentac3bd2e71c0cba44148cf41161b36436e4ce5a26 (diff)
downloadrunes-037366ce1fa33dd7573f206230994f94a0746e3e.tar.gz
runes-037366ce1fa33dd7573f206230994f94a0746e3e.zip
fix underlining when wrapping
-rw-r--r--display.c29
1 files changed, 16 insertions, 13 deletions
diff --git a/display.c b/display.c
index a804a93..ce56c89 100644
--- a/display.c
+++ b/display.c
@@ -179,26 +179,29 @@ void runes_display_show_string(RunesTerm *t, char *buf, size_t len)
cairo_show_text(t->cr, buf);
buf[to_write] = tmp;
+ if (t->font_underline) {
+ cairo_save(t->cr);
+ cairo_set_line_width(t->cr, 1);
+ cairo_move_to(t->cr, x, y - t->ascent + t->fonty - 0.5);
+ cairo_line_to(
+ t->cr,
+ x + (t->fontx * to_write), y - t->ascent + t->fonty - 0.5);
+ cairo_stroke(t->cr);
+ cairo_restore(t->cr);
+ }
+
+
buf += to_write;
remaining -= to_write;
space_in_row = t->cols;
if (remaining) {
runes_display_move_to(t, t->row + 1, 0);
}
+ else {
+ /* XXX broken with utf8 */
+ t->col += len;
+ }
} while (remaining > 0);
-
- if (t->font_underline) {
- cairo_save(t->cr);
- cairo_set_line_width(t->cr, 1);
- cairo_move_to(t->cr, x, y - t->ascent + t->fonty - 0.5);
- cairo_line_to(
- t->cr, x + (t->fontx * len), y - t->ascent + t->fonty - 0.5);
- cairo_stroke(t->cr);
- cairo_restore(t->cr);
- }
-
- /* XXX broken with utf8 */
- t->col += len;
}
}