patch 9.1.2143: wrong rendering of popups when overlapping wide char

Problem:  When a popup window partially overlaps a wide character
          it results in truncated or garbage display.
Solution: When a wide character is partially blocked by a popup, clear both
          cells in the screen buffer to prevent garbage (Yasuhiro Matsumoto).

closes: #19271

Signed-off-by: Yasuhiro Matsumoto <mattn.jp@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
This commit is contained in:
Yasuhiro Matsumoto
2026-02-09 19:08:24 +00:00
committed by Christian Brabandt
parent 18dd63808c
commit 6ffe020b91
3 changed files with 16 additions and 1 deletions
+11 -1
View File
@@ -1,4 +1,4 @@
*version9.txt* For Vim version 9.1. Last change: 2026 Feb 08
*version9.txt* For Vim version 9.1. Last change: 2026 Feb 09
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -52532,4 +52532,14 @@ Patch 9.1.2141
Problem: Truncation when serializing libsodium encryption parameters.
Solution: Correctly cast to long long type (Yasuhiro Matsumoto).
Patch 9.1.2142
Problem: MS-Windows: mouse scroll events not handled for popups
Solution: Do not return early (Mao-Yining)
Patch 9.1.2143
Problem: When a popup window partially overlaps a wide character
it results in truncated or garbage display.
Solution: When a wide character is partially blocked by a popup, clear both
cells in the screen buffer to prevent garbage (Yasuhiro Matsumoto).
vim:tw=78:ts=8:noet:ft=help:norl:fdm=manual:nofoldenable
+3
View File
@@ -586,6 +586,9 @@ screen_line(
// Do not redraw if under the popup menu.
if (redraw_this && skip_for_popup(row, col + coloff))
redraw_this = FALSE;
// Also skip the second cell for double-width characters.
if (redraw_this && char_cells == 2 && skip_for_popup(row, col + coloff + 1))
redraw_this = FALSE;
if (redraw_this)
{
+2
View File
@@ -734,6 +734,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
2143,
/**/
2142,
/**/