commit 2bfb12ef462093893b00d4de0f5bbf6bd265a2d0
parent 570e62d0f99dbc99e4f506ad1b874bb1842159d0
Author: bfredl <bjorn.linse@gmail.com>
Date: Tue, 13 May 2025 12:09:20 +0200
refactor(tui): remove scroll_region_is_full_screen global state
This is a left-over for when we ported to state-less scrolling events
(e.g. no scrolling regions as part of the ext_linegrid state).
We always reset the scrolling region after performing a non-fullscreen
scroll. Thus the extra check in tui_grid_resize() is not needed.
Diffstat:
1 file changed, 4 insertions(+), 11 deletions(-)
diff --git a/src/nvim/tui/tui.c b/src/nvim/tui/tui.c
@@ -95,7 +95,6 @@ struct TUIData {
kvec_t(Rect) invalid_regions;
int row, col;
int out_fd;
- bool scroll_region_is_full_screen;
bool can_change_scroll_region;
bool can_set_lr_margin; // smglr
bool can_set_left_right_margin;
@@ -349,7 +348,6 @@ void tui_query_bg_color(TUIData *tui)
/// from terminfo just in case the controlling terminal has changed (#27177).
static void terminfo_start(TUIData *tui)
{
- tui->scroll_region_is_full_screen = true;
tui->bufpos = 0;
tui->default_attr = false;
tui->can_clear_attr = false;
@@ -1227,10 +1225,6 @@ void tui_grid_resize(TUIData *tui, Integer g, Integer width, Integer height)
UNIBI_SET_NUM_VAR(tui->params[0], (int)height);
UNIBI_SET_NUM_VAR(tui->params[1], (int)width);
unibi_out_ext(tui, tui->unibi_ext.resize_screen);
- // DECSLPP does not reset the scroll region.
- if (tui->scroll_region_is_full_screen) {
- reset_scroll_region(tui, tui->width == grid->width);
- }
} else { // Already handled the SIGWINCH signal; avoid double-resize.
got_winch = got_winch > 0 ? got_winch - 1 : 0;
grid->row = -1;
@@ -1431,13 +1425,12 @@ void tui_grid_scroll(TUIData *tui, Integer g, Integer startrow, Integer endrow,
int right = (int)endcol - 1;
bool fullwidth = left == 0 && right == tui->width - 1;
- tui->scroll_region_is_full_screen = fullwidth
- && top == 0 && bot == tui->height - 1;
+ bool full_screen_scroll = fullwidth && top == 0 && bot == tui->height - 1;
ugrid_scroll(grid, top, bot, left, right, (int)rows);
bool can_scroll = tui->can_scroll
- && (tui->scroll_region_is_full_screen
+ && (full_screen_scroll
|| (tui->can_change_scroll_region
&& ((left == 0 && right == tui->width - 1)
|| tui->can_set_lr_margin
@@ -1445,7 +1438,7 @@ void tui_grid_scroll(TUIData *tui, Integer g, Integer startrow, Integer endrow,
if (can_scroll) {
// Change terminal scroll region and move cursor to the top
- if (!tui->scroll_region_is_full_screen) {
+ if (!full_screen_scroll) {
set_scroll_region(tui, top, bot, left, right);
}
cursor_goto(tui, top, left);
@@ -1468,7 +1461,7 @@ void tui_grid_scroll(TUIData *tui, Integer g, Integer startrow, Integer endrow,
}
// Restore terminal scroll region and cursor
- if (!tui->scroll_region_is_full_screen) {
+ if (!full_screen_scroll) {
reset_scroll_region(tui, fullwidth);
}
} else {