diff options
author | Nicholas Marriott <nicholas.marriott@gmail.com> | 2020-05-02 16:17:44 +0100 |
---|---|---|
committer | Nicholas Marriott <nicholas.marriott@gmail.com> | 2020-05-02 16:17:44 +0100 |
commit | af69289e0ea2b4af80206bcde0574358fa1b9169 (patch) | |
tree | 6a66f17f4912c48f0160ceb5b84aa936fe2eb391 | |
parent | cb1131a29481246c9cb9b68cb8591cc747fcdd9a (diff) | |
download | rtmux-af69289e0ea2b4af80206bcde0574358fa1b9169.tar.gz rtmux-af69289e0ea2b4af80206bcde0574358fa1b9169.tar.bz2 rtmux-af69289e0ea2b4af80206bcde0574358fa1b9169.zip |
Clamping to area needs to use the offset without the status line, since that is
where the window offsets are based.
-rw-r--r-- | popup.c | 4 | ||||
-rw-r--r-- | screen-write.c | 5 | ||||
-rw-r--r-- | tmux.h | 2 | ||||
-rw-r--r-- | tty.c | 4 |
4 files changed, 9 insertions, 6 deletions
@@ -79,8 +79,8 @@ popup_set_client_cb(struct tty_ctx *ttyctx, struct client *c) ttyctx->wsx = c->tty.sx; ttyctx->wsy = c->tty.sy; - ttyctx->xoff = pd->px + 1; - ttyctx->yoff = pd->py + 1; + ttyctx->xoff = ttyctx->rxoff = pd->px + 1; + ttyctx->yoff = ttyctx->ryoff = pd->py + 1; return (1); } diff --git a/screen-write.c b/screen-write.c index c7996ec9..909b8531 100644 --- a/screen-write.c +++ b/screen-write.c @@ -136,8 +136,9 @@ screen_write_set_client_cb(struct tty_ctx *ttyctx, struct client *c) ttyctx->bigger = tty_window_offset(&c->tty, &ttyctx->wox, &ttyctx->woy, &ttyctx->wsx, &ttyctx->wsy); - ttyctx->xoff = wp->xoff; - ttyctx->yoff = wp->yoff; + ttyctx->xoff = ttyctx->rxoff = wp->xoff; + ttyctx->yoff = ttyctx->ryoff = wp->yoff; + if (status_at_line(c) == 0) ttyctx->yoff += status_line_size(c); @@ -1321,6 +1321,8 @@ struct tty_ctx { /* Target region (usually pane) offset and size. */ u_int xoff; u_int yoff; + u_int rxoff; + u_int ryoff; u_int sx; u_int sy; @@ -987,7 +987,7 @@ static int tty_clamp_line(struct tty *tty, const struct tty_ctx *ctx, u_int px, u_int py, u_int nx, u_int *i, u_int *x, u_int *rx, u_int *ry) { - u_int xoff = ctx->xoff + px; + u_int xoff = ctx->rxoff + px; if (!tty_is_visible(tty, ctx, px, py, nx, 1)) return (0); @@ -1082,7 +1082,7 @@ tty_clamp_area(struct tty *tty, const struct tty_ctx *ctx, u_int px, u_int py, u_int nx, u_int ny, u_int *i, u_int *j, u_int *x, u_int *y, u_int *rx, u_int *ry) { - u_int xoff = ctx->xoff + px, yoff = ctx->yoff + py; + u_int xoff = ctx->rxoff + px, yoff = ctx->ryoff + py; if (!tty_is_visible(tty, ctx, px, py, nx, ny)) return (0); |