patch 9.2.0259: tabpanel: corrupted display during scrolling causing flicker
Commit:
https://github.com/vim/vim/commit/f6e1dd11f45e555710cf202a06af15b8f823e609
Author: Yasuhiro Matsumoto <
matt...@gmail.com>
Date: Thu Mar 26 21:03:46 2026 +0000
patch 9.2.0259: tabpanel: corrupted display during scrolling causing flicker
Problem: tabpanel: corrupted tabpanel during scrolling causing flicker
Solution: When the tabpanel is visible, force a line-by-line redraw in
win_do_lines() similarly to popup handling (Yasuhiro Matsumoto).
When a vertical tabpanel is visible, terminal scroll operations in
win_do_lines() affect the full screen width, corrupting the tabpanel
area. The tabpanel is then redrawn via redraw_tabpanel, causing visible
flicker. Return FAIL to force line-by-line redraw instead, analogous to
the existing popup_visible check.
closes: #19832
Signed-off-by: Yasuhiro Matsumoto <
matt...@gmail.com>
Signed-off-by: Christian Brabandt <
c...@256bit.org>
diff --git a/src/screen.c b/src/screen.c
index 78927c163..eeee319bf 100644
--- a/src/screen.c
+++ b/src/screen.c
@@ -3845,6 +3845,13 @@ win_do_lines(
if (!no_win_do_lines_ins)
clear_cmdline = TRUE;
+#if defined(FEAT_TABPANEL)
+ // Terminal scroll operations affect the full screen width, which would
+ // corrupt the vertical tabpanel area and cause flicker.
+ if (tabpanel_width() > 0)
+ return FAIL;
+#endif
+
/*
* If the terminal can set a scroll region, use that.
* Always do this in a vertically split window. This will redraw from
diff --git a/src/version.c b/src/version.c
index 8b35a8790..a0bd233d1 100644
--- a/src/version.c
+++ b/src/version.c
@@ -734,6 +734,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
+/**/
+ 259,
/**/
258,
/**/