Fix second cell of emoji created using variation selectors not having the same attributes as the first cell

Fix #1109
This commit is contained in:
Kovid Goyal 2018-10-30 15:00:47 +05:30
parent 65c2cbe93a
commit 23aea68e32
No known key found for this signature in database
GPG Key ID: 06BC317B515ACE7C
2 changed files with 3 additions and 0 deletions

View File

@ -57,6 +57,8 @@ Changelog
- Fix :opt:`mouse_hide_wait` only taking effect after an event such as cursor - Fix :opt:`mouse_hide_wait` only taking effect after an event such as cursor
blink or key press (:iss:`1073`) blink or key press (:iss:`1073`)
- Fix second cell of emoji created using variation selectors not having
the same attributes as the first cell (:iss:`1109`)
0.12.3 [2018-09-29] 0.12.3 [2018-09-29]
------------------------------ ------------------------------

View File

@ -366,6 +366,7 @@ draw_combining_char(Screen *self, char_type ch) {
CPUCell *cpu_cell = self->linebuf->line->cpu_cells + xpos; CPUCell *cpu_cell = self->linebuf->line->cpu_cells + xpos;
GPUCell *gpu_cell = self->linebuf->line->gpu_cells + xpos; GPUCell *gpu_cell = self->linebuf->line->gpu_cells + xpos;
if ((gpu_cell->attrs & WIDTH_MASK) != 2 && cpu_cell->cc_idx[0] == VS16 && is_emoji_presentation_base(cpu_cell->ch)) { if ((gpu_cell->attrs & WIDTH_MASK) != 2 && cpu_cell->cc_idx[0] == VS16 && is_emoji_presentation_base(cpu_cell->ch)) {
if (xpos < self->columns - 1) line_set_char(self->linebuf->line, self->cursor->x, 0, 0, self->cursor, true);
gpu_cell->attrs = (gpu_cell->attrs & !WIDTH_MASK) | 2; gpu_cell->attrs = (gpu_cell->attrs & !WIDTH_MASK) | 2;
if (xpos == self->columns - 1) move_widened_char(self, cpu_cell, gpu_cell, xpos, ypos); if (xpos == self->columns - 1) move_widened_char(self, cpu_cell, gpu_cell, xpos, ypos);
else self->cursor->x++; else self->cursor->x++;