mirror of
https://github.com/tmux/tmux.git
synced 2026-07-09 19:09:30 +00:00
Clip the status line and menu against an open popup overlay, GitHub
issue 5350 from Noam Stolero.
This commit is contained in:
2
popup.c
2
popup.c
@@ -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++) {
|
||||
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]);
|
||||
}
|
||||
|
||||
|
||||
@@ -1588,8 +1588,10 @@ redraw_draw(struct client *c, struct window_pane *wp, int flags)
|
||||
struct screen *sl;
|
||||
struct redraw_scene *scene;
|
||||
struct window_pane *loop;
|
||||
u_int width, i, y, lines;
|
||||
u_int width, i, y, lines, j;
|
||||
struct redraw_span *first;
|
||||
struct visible_ranges *r;
|
||||
struct visible_range *rr;
|
||||
int redraw;
|
||||
|
||||
if (c->flags & CLIENT_SUSPENDED)
|
||||
@@ -1694,8 +1696,16 @@ redraw_draw(struct client *c, struct window_pane *wp, int flags)
|
||||
else
|
||||
y = c->tty.sy - lines;
|
||||
sl = c->status.active;
|
||||
for (i = 0; i < lines; i++)
|
||||
tty_draw_line(tty, sl, 0, i, UINT_MAX, 0, y + i, NULL);
|
||||
for (i = 0; i < lines; i++) {
|
||||
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))
|
||||
c->overlay_draw(c, c->overlay_data);
|
||||
|
||||
Reference in New Issue
Block a user