]> git.ipfire.org Git - thirdparty/vim.git/commitdiff
patch 9.1.2143: wrong rendering of popups when overlapping wide char v9.1.2143
authorYasuhiro Matsumoto <mattn.jp@gmail.com>
Mon, 9 Feb 2026 19:08:24 +0000 (19:08 +0000)
committerChristian Brabandt <cb@256bit.org>
Mon, 9 Feb 2026 19:08:24 +0000 (19:08 +0000)
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>
runtime/doc/version9.txt
src/screen.c
src/version.c

index c5ed3da001f0614813af434ea701e50680fd78c8..462a048486d065dab476530666f7915eb00dec29 100644 (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
index 57f37966c9fceddce186e2dc51e3ac8b1f097649..3cd3ad39f85f5ac5a756b4a02d2c801785c23074 100644 (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)
        {
index 6a6eaecb92c61c461e8abd91c50e3ec7286b5b90..24f3ea3cee7a0d5ba26c796c35374c10fb89aa7d 100644 (file)
@@ -734,6 +734,8 @@ static char *(features[]) =
 
 static int included_patches[] =
 {   /* Add new patch number below this line */
+/**/
+    2143,
 /**/
     2142,
 /**/