From 0a0e9852a27588cff87f9afbbdf9416c1c1709fb Mon Sep 17 00:00:00 2001
From: Michael Grant <mgrant@grant.org>
Date: Wed, 12 Mar 2025 15:44:04 -0400
Subject: [PATCH] Add overlay check to scrollbar code to prevent scrollbars
 obscured by an overlay from flashing while being dragged around.

---
 screen-redraw.c | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/screen-redraw.c b/screen-redraw.c
index 0d2acad6..9cf01fc4 100644
--- a/screen-redraw.c
+++ b/screen-redraw.c
@@ -1005,6 +1005,7 @@ screen_redraw_draw_scrollbar(struct screen_redraw_ctx *ctx,
 	struct tty		*tty = &c->tty;
 	struct grid_cell	 gc, slgc, *gcp;
 	struct style		*sb_style = &wp->scrollbar_style;
+	struct overlay_ranges	 r;
 	u_int			 i, j, imax, jmax;
 	u_int			 sb_w = sb_style->width, sb_pad = sb_style->pad;
 	int			 px, py, ox = ctx->ox, oy = ctx->oy;
@@ -1033,6 +1034,11 @@ screen_redraw_draw_scrollbar(struct screen_redraw_ctx *ctx,
 			    py < yoff - oy - 1 ||
 			    py >= sy || py < 0)
 				continue;
+			if (c->overlay_check != NULL) {
+				c->overlay_check(c, c->overlay_data, px, py, 1, &r);
+				if (r.nx[0] + r.nx[1] == 0)
+					continue;
+			}
 			tty_cursor(tty, px, py);
 			if ((sb_pos == PANE_SCROLLBARS_LEFT &&
 			    i >= sb_w && i < sb_w + sb_pad) ||