summaryrefslogtreecommitdiffstats
path: root/screen-redraw.c
diff options
context:
space:
mode:
authornicm <nicm>2021-10-11 13:27:50 +0000
committernicm <nicm>2021-10-11 13:27:50 +0000
commitb8581ec80e5339be5e2c08cfec70a77f21ba06b2 (patch)
treeaa0d8f6d2e94066431aefca55f1f8b758a8e108e /screen-redraw.c
parent759efe1b3327a7244c03ecc7b90e0e3c49712d06 (diff)
Make positions hidden by overlays range-based rather than character-based,
from Anindya Mukherjee.
Diffstat (limited to 'screen-redraw.c')
-rw-r--r--screen-redraw.c13
1 files changed, 8 insertions, 5 deletions
diff --git a/screen-redraw.c b/screen-redraw.c
index 82e390cd..1d736531 100644
--- a/screen-redraw.c
+++ b/screen-redraw.c
@@ -685,14 +685,17 @@ screen_redraw_draw_borders_cell(struct screen_redraw_ctx *ctx, u_int i, u_int j)
struct tty *tty = &c->tty;
struct format_tree *ft;
struct window_pane *wp;
- u_int cell_type, x = ctx->ox + i, y = ctx->oy + j;
- int pane_status = ctx->pane_status, isolates;
struct grid_cell gc;
const struct grid_cell *tmp;
+ struct overlay_ranges r;
+ u_int cell_type, x = ctx->ox + i, y = ctx->oy + j;
+ int pane_status = ctx->pane_status, isolates;
- if (c->overlay_check != NULL &&
- !c->overlay_check(c, c->overlay_data, x, y))
- return;
+ if (c->overlay_check != NULL) {
+ c->overlay_check(c, c->overlay_data, x, y, 1, &r);
+ if (r.nx[0] + r.nx[1] == 0)
+ return;
+ }
cell_type = screen_redraw_check_cell(c, x, y, pane_status, &wp);
if (cell_type == CELL_INSIDE)