Fix drawing of ACS characters (they need to go character-at-a-time),

accidentally broken in last commit.
pull/1247/head
nicm 2018-01-16 17:03:18 +00:00
parent 5849b73b81
commit 75842bfe66
1 changed files with 10 additions and 4 deletions

14
tty.c
View File

@ -977,17 +977,23 @@ tty_draw_line(struct tty *tty, const struct window_pane *wp,
} }
if (gcp->flags & GRID_FLAG_SELECTED) if (gcp->flags & GRID_FLAG_SELECTED)
screen_select_cell(s, &last, &gc); screen_select_cell(s, &last, gcp);
else else
memcpy(&last, &gc, sizeof last); memcpy(&last, gcp, sizeof last);
if (ux + gcp->data.width > screen_size_x(s)) if (ux + gcp->data.width > screen_size_x(s)) {
tty_attributes(tty, &last, wp);
for (j = 0; j < gcp->data.width; j++) { for (j = 0; j < gcp->data.width; j++) {
if (ux + j > screen_size_x(s)) if (ux + j > screen_size_x(s))
break; break;
tty_putc(tty, ' '); tty_putc(tty, ' ');
ux++; ux++;
} }
else { } else if (gcp->attr & GRID_ATTR_CHARSET) {
tty_attributes(tty, &last, wp);
for (j = 0; j < gcp->data.size; j++)
tty_putc(tty, gcp->data.data[j]);
ux += gc.data.width;
} else {
memcpy(buf + len, gcp->data.data, gcp->data.size); memcpy(buf + len, gcp->data.data, gcp->data.size);
len += gcp->data.size; len += gcp->data.size;
width += gcp->data.width; width += gcp->data.width;