0
0
mirror of https://github.com/vim/vim.git synced 2025-11-13 22:54:27 -05:00

patch 9.1.1451: tabpanel rendering artifacts when scrolling

Problem:  tabpanel rendering artifacts when scrolling
Solution: update scrolling logic (Hirohito Higashi)

fixes: #17495
closes: #17496

Signed-off-by: Hirohito Higashi <h.east.727@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
This commit is contained in:
Hirohito Higashi
2025-06-10 20:42:06 +02:00
committed by Christian Brabandt
parent 1319009d59
commit 30b4ddf925
3 changed files with 5 additions and 12 deletions

View File

@@ -4464,7 +4464,7 @@ scroll_region_set(win_T *wp, int off)
{ {
OUT_STR(tgoto((char *)T_CS, W_WINROW(wp) + wp->w_height - 1, OUT_STR(tgoto((char *)T_CS, W_WINROW(wp) + wp->w_height - 1,
W_WINROW(wp) + off)); W_WINROW(wp) + off));
if (*T_CSV != NUL && wp->w_width != topframe->fr_width) if (*T_CSV != NUL && wp->w_width != Columns)
OUT_STR(tgoto((char *)T_CSV, wp->w_wincol + wp->w_width - 1, OUT_STR(tgoto((char *)T_CSV, wp->w_wincol + wp->w_width - 1,
wp->w_wincol)); wp->w_wincol));
screen_start(); // don't know where cursor is now screen_start(); // don't know where cursor is now
@@ -4478,9 +4478,7 @@ scroll_region_reset(void)
{ {
OUT_STR(tgoto((char *)T_CS, (int)Rows - 1, 0)); OUT_STR(tgoto((char *)T_CS, (int)Rows - 1, 0));
if (*T_CSV != NUL) if (*T_CSV != NUL)
OUT_STR(tgoto((char *)T_CSV, OUT_STR(tgoto((char *)T_CSV, (int)Columns - 1, 0));
firstwin->w_wincol + topframe->fr_width - 1,
firstwin->w_wincol));
screen_start(); // don't know where cursor is now screen_start(); // don't know where cursor is now
} }

View File

@@ -709,6 +709,8 @@ static char *(features[]) =
static int included_patches[] = static int included_patches[] =
{ /* Add new patch number below this line */ { /* Add new patch number below this line */
/**/
1451,
/**/ /**/
1450, 1450,
/**/ /**/

View File

@@ -6226,14 +6226,7 @@ shell_new_columns(void)
if (!skip_win_fix_scroll) if (!skip_win_fix_scroll)
win_fix_scroll(TRUE); win_fix_scroll(TRUE);
#ifdef FEAT_GUI
if (gui.in_use && !gui.starting)
{
if (scroll_region)
scroll_region_reset();
scroll_start(); // may scroll the screen to the right position
}
#endif
redraw_tabline = TRUE; redraw_tabline = TRUE;
#if defined(FEAT_TABPANEL) #if defined(FEAT_TABPANEL)
redraw_tabpanel = TRUE; redraw_tabpanel = TRUE;