From e20fa59903525e15cecd680a2f32ece8a5d1bc0c Mon Sep 17 00:00:00 2001 From: mikoto2000 Date: Wed, 17 Apr 2024 22:06:54 +0200 Subject: patch 9.1.0344: Cursor wrong after using setcellwidth() in terminal Problem: Cursor wrong after using setcellwidth() in terminal (mikoto2000) Solution: output additional spaces, so the behaviour matches the GUI (mikoto2000) fixes: #14539 closes: #14540 Signed-off-by: mikoto2000 Signed-off-by: Christian Brabandt Fix CUI `setcellwidths` characters draw behavior to same GUI behavior. --- src/screen.c | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) (limited to 'src/screen.c') diff --git a/src/screen.c b/src/screen.c index 71ddbcaab2..a8b4559b11 100644 --- a/src/screen.c +++ b/src/screen.c @@ -1981,7 +1981,24 @@ screen_char(unsigned off, int row, int col) { char_u buf[MB_MAXBYTES + 1]; - if (utf_ambiguous_width(ScreenLinesUC[off])) + if (get_cellwidth(ScreenLinesUC[off]) > 1) + { + // If the width is set to 2 with `setcellwidths` + +#ifdef FEAT_GUI + if (!gui.in_use) + { +#endif + // Clear the two screen cells. If the character is actually + // single width it won't change the second cell. + out_str((char_u *)" "); + term_windgoto(row, col); + screen_cur_col = 9999; +#ifdef FEAT_GUI + } +#endif + } + else if (utf_ambiguous_width(ScreenLinesUC[off])) { if (*p_ambw == 'd' #ifdef FEAT_GUI -- cgit v1.2.3