Add scrollbar auto-hide feature.

This commit is contained in:
Michael Grant
2026-06-20 08:29:47 +02:00
parent cab77de83f
commit 738083c4a4
10 changed files with 288 additions and 25 deletions

View File

@@ -860,6 +860,7 @@ window_copy_scroll1(struct window_mode_entry *wme, struct window_pane *wp,
if (data->searchmark != NULL && !data->timeout)
window_copy_search_marks(wme, NULL, data->searchregex, 1);
window_copy_update_selection(wme, 1, 0);
window_pane_scrollbar_show(wp, 1);
window_copy_redraw_screen(wme);
}
@@ -913,6 +914,7 @@ window_copy_pageup1(struct window_mode_entry *wme, int half_page)
if (data->searchmark != NULL && !data->timeout)
window_copy_search_marks(wme, NULL, data->searchregex, 1);
window_copy_update_selection(wme, 1, 0);
window_pane_scrollbar_show(wme->wp, 1);
window_copy_redraw_screen(wme);
}
@@ -973,6 +975,7 @@ window_copy_pagedown1(struct window_mode_entry *wme, int half_page,
if (data->searchmark != NULL && !data->timeout)
window_copy_search_marks(wme, NULL, data->searchregex, 1);
window_copy_update_selection(wme, 1, 0);
window_pane_scrollbar_show(wme->wp, 1);
window_copy_redraw_screen(wme);
return (0);
}
@@ -1789,7 +1792,7 @@ window_copy_cmd_history_bottom(struct window_copy_cmd_state *cs)
struct window_mode_entry *wme = cs->wme;
struct window_copy_mode_data *data = wme->data;
struct screen *s = data->backing;
u_int oy;
u_int oy, old_oy = data->oy;
oy = screen_hsize(s) + data->cy - data->oy;
if (data->lineflag == LINE_SEL_RIGHT_LEFT && oy == data->endsely)
@@ -1802,6 +1805,8 @@ window_copy_cmd_history_bottom(struct window_copy_cmd_state *cs)
if (data->searchmark != NULL && !data->timeout)
window_copy_search_marks(wme, NULL, data->searchregex, 1);
window_copy_update_selection(wme, 1, 0);
if (data->oy != old_oy)
window_pane_scrollbar_show(wme->wp, 1);
return (WINDOW_COPY_CMD_REDRAW);
}
@@ -1810,7 +1815,7 @@ window_copy_cmd_history_top(struct window_copy_cmd_state *cs)
{
struct window_mode_entry *wme = cs->wme;
struct window_copy_mode_data *data = wme->data;
u_int oy;
u_int oy, old_oy = data->oy;
oy = screen_hsize(data->backing) + data->cy - data->oy;
if (data->lineflag == LINE_SEL_LEFT_RIGHT && oy == data->sely)
@@ -1823,6 +1828,8 @@ window_copy_cmd_history_top(struct window_copy_cmd_state *cs)
if (data->searchmark != NULL && !data->timeout)
window_copy_search_marks(wme, NULL, data->searchregex, 1);
window_copy_update_selection(wme, 1, 0);
if (data->oy != old_oy)
window_pane_scrollbar_show(wme->wp, 1);
return (WINDOW_COPY_CMD_REDRAW);
}
@@ -3772,7 +3779,7 @@ window_copy_scroll_to(struct window_mode_entry *wme, u_int px, u_int py,
{
struct window_copy_mode_data *data = wme->data;
struct grid *gd = data->backing->grid;
u_int offset, gap;
u_int offset, gap, old_oy = data->oy;
data->cx = px;
@@ -3796,6 +3803,8 @@ window_copy_scroll_to(struct window_mode_entry *wme, u_int px, u_int py,
if (!no_redraw && data->searchmark != NULL && !data->timeout)
window_copy_search_marks(wme, NULL, data->searchregex, 1);
window_copy_update_selection(wme, 1, 0);
if (data->oy != old_oy)
window_pane_scrollbar_show(wme->wp, 1);
if (!no_redraw)
window_copy_redraw_screen(wme);
}
@@ -6539,6 +6548,7 @@ window_copy_scroll_up(struct window_mode_entry *wme, u_int ny)
if (ny == 0)
return;
data->oy -= ny;
window_pane_scrollbar_show(wp, 1);
if (data->searchmark != NULL && !data->timeout)
window_copy_search_marks(wme, NULL, data->searchregex, 1);
@@ -6604,6 +6614,7 @@ window_copy_scroll_down(struct window_mode_entry *wme, u_int ny)
if (ny == 0)
return;
data->oy += ny;
window_pane_scrollbar_show(wp, 1);
if (data->searchmark != NULL && !data->timeout)
window_copy_search_marks(wme, NULL, data->searchregex, 1);