version 1.211, 2022/10/25 17:53:31 |
version 1.212, 2022/12/16 08:19:58 |
|
|
struct grid_cell tmp_gc, now_gc; |
struct grid_cell tmp_gc, now_gc; |
struct tty_ctx ttyctx; |
struct tty_ctx ttyctx; |
u_int sx = screen_size_x(s), sy = screen_size_y(s); |
u_int sx = screen_size_x(s), sy = screen_size_y(s); |
u_int width = gc->data.width, xx, last, cx, cy; |
u_int width = gc->data.width, xx, last, cy; |
int selected, skip = 1; |
int selected, skip = 1; |
|
|
/* Ignore padding cells. */ |
/* Ignore padding cells. */ |
|
|
ctx->flags &= ~SCREEN_WRITE_ZWJ; |
ctx->flags &= ~SCREEN_WRITE_ZWJ; |
screen_write_collect_flush(ctx, 0, __func__); |
screen_write_collect_flush(ctx, 0, __func__); |
if ((gc = screen_write_combine(ctx, ud, &xx)) != NULL) { |
if ((gc = screen_write_combine(ctx, ud, &xx)) != NULL) { |
cx = s->cx; cy = s->cy; |
cy = s->cy; |
screen_write_set_cursor(ctx, xx, s->cy); |
screen_write_set_cursor(ctx, xx, s->cy); |
screen_write_initctx(ctx, &ttyctx, 0); |
screen_write_initctx(ctx, &ttyctx, 0); |
ttyctx.cell = gc; |
ttyctx.cell = gc; |
tty_write(tty_cmd_cell, &ttyctx); |
tty_write(tty_cmd_cell, &ttyctx); |
s->cx = cx; s->cy = cy; |
s->cx = xx + 1 + gc->data.width; s->cy = cy; |
} |
} |
return; |
return; |
} |
} |
|
|
/* Append the data. */ |
/* Append the data. */ |
memcpy(gc.data.data + gc.data.size, ud->data, ud->size); |
memcpy(gc.data.data + gc.data.size, ud->data, ud->size); |
gc.data.size += ud->size; |
gc.data.size += ud->size; |
|
|
|
/* If this is U+FE0F VARIATION SELECTOR-16, force the width to 2. */ |
|
if (gc.data.width == 1 && |
|
ud->size == 3 && |
|
memcmp(ud->data, "\357\270\217", 3) == 0) { |
|
grid_view_set_padding(gd, (*xx) + 1, s->cy); |
|
gc.data.width = 2; |
|
} |
|
|
/* Set the new cell. */ |
/* Set the new cell. */ |
grid_view_set_cell(gd, *xx, s->cy, &gc); |
grid_view_set_cell(gd, *xx, s->cy, &gc); |