diff options
author | Jesse Luehrs <doy@tozt.net> | 2014-04-15 22:17:11 -0400 |
---|---|---|
committer | Jesse Luehrs <doy@tozt.net> | 2014-04-15 22:17:11 -0400 |
commit | 037366ce1fa33dd7573f206230994f94a0746e3e (patch) | |
tree | d6a7710d95bb5a1093deef60ff1d6c0c320bbdb9 | |
parent | ac3bd2e71c0cba44148cf41161b36436e4ce5a26 (diff) | |
download | runes-037366ce1fa33dd7573f206230994f94a0746e3e.tar.gz runes-037366ce1fa33dd7573f206230994f94a0746e3e.zip |
fix underlining when wrapping
-rw-r--r-- | display.c | 29 |
1 files changed, 16 insertions, 13 deletions
@@ -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; } } |