Clip the status line and menu against an open popup overlay, GitHub

issue 5350 from Noam Stolero.
This commit is contained in:
nicm
2026-07-09 07:32:58 +00:00
parent dea309cf8d
commit e242da168b
2 changed files with 14 additions and 4 deletions

View File

@@ -245,7 +245,7 @@ popup_check_cb(struct client* c, void *data, u_int px, u_int py, u_int nx)
*/ */
for (i = 0; i < mr->used; i++) { for (i = 0; i < mr->used; i++) {
server_client_overlay_range(pd->px, pd->py, pd->sx, server_client_overlay_range(pd->px, pd->py, pd->sx,
pd->sy, r->ranges[i].px, py, r->ranges[i].nx, pd->sy, mr->ranges[i].px, py, mr->ranges[i].nx,
&pd->or[i]); &pd->or[i]);
} }

View File

@@ -1588,8 +1588,10 @@ redraw_draw(struct client *c, struct window_pane *wp, int flags)
struct screen *sl; struct screen *sl;
struct redraw_scene *scene; struct redraw_scene *scene;
struct window_pane *loop; struct window_pane *loop;
u_int width, i, y, lines; u_int width, i, y, lines, j;
struct redraw_span *first; struct redraw_span *first;
struct visible_ranges *r;
struct visible_range *rr;
int redraw; int redraw;
if (c->flags & CLIENT_SUSPENDED) if (c->flags & CLIENT_SUSPENDED)
@@ -1694,8 +1696,16 @@ redraw_draw(struct client *c, struct window_pane *wp, int flags)
else else
y = c->tty.sy - lines; y = c->tty.sy - lines;
sl = c->status.active; sl = c->status.active;
for (i = 0; i < lines; i++) for (i = 0; i < lines; i++) {
tty_draw_line(tty, sl, 0, i, UINT_MAX, 0, y + i, NULL); r = tty_check_overlay_range(tty, 0, y + i, tty->sx);
for (j = 0; j < r->used; j++) {
rr = &r->ranges[j];
if (rr->nx == 0)
continue;
tty_draw_line(tty, sl, rr->px, i, rr->nx,
rr->px, y + i, NULL);
}
}
} }
if (c->overlay_draw != NULL && (flags & REDRAW_OVERLAY)) if (c->overlay_draw != NULL && (flags & REDRAW_OVERLAY))
c->overlay_draw(c, c->overlay_data); c->overlay_draw(c, c->overlay_data);