mirror of
https://github.com/tmux/tmux.git
synced 2026-10-12 05:34:24 +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++) {
|
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]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -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);
|
||||||
|
|||||||
Reference in New Issue
Block a user