]> git.ipfire.org Git - thirdparty/vim.git/commitdiff
patch 9.2.0259: tabpanel: corrupted display during scrolling causing flicker v9.2.0259
authorYasuhiro Matsumoto <mattn.jp@gmail.com>
Thu, 26 Mar 2026 21:03:46 +0000 (21:03 +0000)
committerChristian Brabandt <cb@256bit.org>
Thu, 26 Mar 2026 21:03:46 +0000 (21:03 +0000)
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 <mattn.jp@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
src/screen.c
src/version.c

index 78927c163d4a57afc4a9e14a8f5237bbfc73bd5d..eeee319bfe5e0dfbd025c7c118794d36c68e710a 100644 (file)
@@ -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
index 8b35a87905a2f575aa63b677dbaf513b8b60aead..a0bd233d14e04fa216125908adb788baea2bc957 100644 (file)
@@ -734,6 +734,8 @@ static char *(features[]) =
 
 static int included_patches[] =
 {   /* Add new patch number below this line */
+/**/
+    259,
 /**/
     258,
 /**/