mirror of
https://git.tartarus.org/simon/putty.git
synced 2025-01-09 17:38:00 +00:00
term_bidi_cache_store() now has a need to distinguish between the
_width_ of a terminal line (number of character cell positions) and its _size_ (number of termchars), since of course these differ in the presence of combining characters. [originally from svn r4938]
This commit is contained in:
parent
44aca28fad
commit
a10edf435b
13
terminal.c
13
terminal.c
@ -4371,7 +4371,7 @@ static int term_bidi_cache_hit(Terminal *term, int line,
|
||||
|
||||
static void term_bidi_cache_store(Terminal *term, int line, termchar *lbefore,
|
||||
termchar *lafter, bidi_char *wcTo,
|
||||
int width)
|
||||
int width, int size)
|
||||
{
|
||||
int i;
|
||||
|
||||
@ -4403,14 +4403,14 @@ static void term_bidi_cache_store(Terminal *term, int line, termchar *lbefore,
|
||||
sfree(term->post_bidi_cache[line].backward);
|
||||
|
||||
term->pre_bidi_cache[line].width = width;
|
||||
term->pre_bidi_cache[line].chars = snewn(width, termchar);
|
||||
term->pre_bidi_cache[line].chars = snewn(size, termchar);
|
||||
term->post_bidi_cache[line].width = width;
|
||||
term->post_bidi_cache[line].chars = snewn(width, termchar);
|
||||
term->post_bidi_cache[line].chars = snewn(size, termchar);
|
||||
term->post_bidi_cache[line].forward = snewn(width, int);
|
||||
term->post_bidi_cache[line].backward = snewn(width, int);
|
||||
|
||||
memcpy(term->pre_bidi_cache[line].chars, lbefore, width * TSIZE);
|
||||
memcpy(term->post_bidi_cache[line].chars, lafter, width * TSIZE);
|
||||
memcpy(term->pre_bidi_cache[line].chars, lbefore, size * TSIZE);
|
||||
memcpy(term->post_bidi_cache[line].chars, lafter, size * TSIZE);
|
||||
memset(term->post_bidi_cache[line].forward, 0, width * sizeof(int));
|
||||
memset(term->post_bidi_cache[line].backward, 0, width * sizeof(int));
|
||||
|
||||
@ -4512,7 +4512,8 @@ static termchar *term_bidi_line(Terminal *term, struct termline *ldata,
|
||||
term->ltemp[it].chr = term->wcTo[it].wc;
|
||||
}
|
||||
term_bidi_cache_store(term, scr_y, ldata->chars,
|
||||
term->ltemp, term->wcTo, ldata->size);
|
||||
term->ltemp, term->wcTo,
|
||||
term->cols, ldata->size);
|
||||
|
||||
lchars = term->ltemp;
|
||||
} else {
|
||||
|
Loading…
Reference in New Issue
Block a user