aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNicholas Marriott <nicholas.marriott@gmail.com>2020-05-02 16:17:44 +0100
committerNicholas Marriott <nicholas.marriott@gmail.com>2020-05-02 16:17:44 +0100
commitaf69289e0ea2b4af80206bcde0574358fa1b9169 (patch)
tree6a66f17f4912c48f0160ceb5b84aa936fe2eb391
parentcb1131a29481246c9cb9b68cb8591cc747fcdd9a (diff)
downloadrtmux-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.c4
-rw-r--r--screen-write.c5
-rw-r--r--tmux.h2
-rw-r--r--tty.c4
4 files changed, 9 insertions, 6 deletions
diff --git a/popup.c b/popup.c
index 81ae0347..9937d586 100644
--- a/popup.c
+++ b/popup.c
@@ -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);
diff --git a/tmux.h b/tmux.h
index 15a8506f..a1f6d924 100644
--- a/tmux.h
+++ b/tmux.h
@@ -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;
diff --git a/tty.c b/tty.c
index 25a0cd02..388f6f5f 100644
--- a/tty.c
+++ b/tty.c
@@ -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);