diff options
author | Nicholas Marriott <nicm@cvs.openbsd.org> | 2009-10-12 09:09:36 +0000 |
---|---|---|
committer | Nicholas Marriott <nicm@cvs.openbsd.org> | 2009-10-12 09:09:36 +0000 |
commit | 2fdbe83ee7fa5479bde5f49e2fc2868a96cdea95 (patch) | |
tree | 4e8e4abe70bb4c5a01de73f36af1fab5fb6fdffc /usr.bin/tmux/tty.c | |
parent | ea5ba3d6e827bef2f8fd9d2153604c8aecc0293c (diff) |
Cleanup: use two functions for region setting, one for absolute and one inside
pane.
Diffstat (limited to 'usr.bin/tmux/tty.c')
-rw-r--r-- | usr.bin/tmux/tty.c | 53 |
1 files changed, 36 insertions, 17 deletions
diff --git a/usr.bin/tmux/tty.c b/usr.bin/tmux/tty.c index eb5a533ce2b..7761adbc642 100644 --- a/usr.bin/tmux/tty.c +++ b/usr.bin/tmux/tty.c @@ -1,4 +1,4 @@ -/* $OpenBSD: tty.c,v 1.38 2009/10/11 22:35:10 nicm Exp $ */ +/* $OpenBSD: tty.c,v 1.39 2009/10/12 09:09:35 nicm Exp $ */ /* * Copyright (c) 2007 Nicholas Marriott <nicm@users.sourceforge.net> @@ -579,7 +579,7 @@ tty_cmd_insertline(struct tty *tty, const struct tty_ctx *ctx) tty_reset(tty); - tty_region(tty, ctx->orupper, ctx->orlower, wp->yoff); + tty_region_pane(tty, ctx, ctx->orupper, ctx->orlower); tty_cursor(tty, ctx->ocx, ctx->ocy, wp->xoff, wp->yoff); tty_emulate_repeat(tty, TTYC_IL, TTYC_IL1, ctx->num); @@ -599,7 +599,7 @@ tty_cmd_deleteline(struct tty *tty, const struct tty_ctx *ctx) tty_reset(tty); - tty_region(tty, ctx->orupper, ctx->orlower, wp->yoff); + tty_region_pane(tty, ctx, ctx->orupper, ctx->orlower); tty_cursor(tty, ctx->ocx, ctx->ocy, wp->xoff, wp->yoff); tty_emulate_repeat(tty, TTYC_DL, TTYC_DL1, ctx->num); @@ -675,8 +675,10 @@ tty_cmd_reverseindex(struct tty *tty, const struct tty_ctx *ctx) if (ctx->ocy == ctx->orupper) { tty_reset(tty); - tty_region(tty, ctx->orupper, ctx->orlower, wp->yoff); + + tty_region_pane(tty, ctx, ctx->orupper, ctx->orlower); tty_cursor(tty, ctx->ocx, ctx->orupper, wp->xoff, wp->yoff); + tty_putcode(tty, TTYC_RI); } } @@ -695,8 +697,10 @@ tty_cmd_linefeed(struct tty *tty, const struct tty_ctx *ctx) if (ctx->ocy == ctx->orlower) { tty_reset(tty); - tty_region(tty, ctx->orupper, ctx->orlower, wp->yoff); + + tty_region_pane(tty, ctx, ctx->orupper, ctx->orlower); tty_cursor(tty, ctx->ocx, ctx->ocy, wp->xoff, wp->yoff); + tty_putc(tty, '\n'); } } @@ -710,8 +714,9 @@ tty_cmd_clearendofscreen(struct tty *tty, const struct tty_ctx *ctx) tty_reset(tty); - tty_region(tty, 0, screen_size_y(s) - 1, wp->yoff); + tty_region_pane(tty, ctx, 0, screen_size_y(s) - 1); tty_cursor(tty, ctx->ocx, ctx->ocy, wp->xoff, wp->yoff); + if (wp->xoff == 0 && screen_size_x(s) >= tty->sx && tty_term_has(tty->term, TTYC_EL)) { tty_putcode(tty, TTYC_EL); @@ -745,8 +750,9 @@ tty_cmd_clearstartofscreen(struct tty *tty, const struct tty_ctx *ctx) tty_reset(tty); - tty_region(tty, 0, screen_size_y(s) - 1, wp->yoff); + tty_region_pane(tty, ctx, 0, screen_size_y(s) - 1); tty_cursor(tty, 0, 0, wp->xoff, wp->yoff); + if (wp->xoff == 0 && screen_size_x(s) >= tty->sx && tty_term_has(tty->term, TTYC_EL)) { for (i = 0; i < ctx->ocy; i++) { @@ -774,8 +780,9 @@ tty_cmd_clearscreen(struct tty *tty, const struct tty_ctx *ctx) tty_reset(tty); - tty_region(tty, 0, screen_size_y(s) - 1, wp->yoff); + tty_region_pane(tty, ctx, 0, screen_size_y(s) - 1); tty_cursor(tty, 0, 0, wp->xoff, wp->yoff); + if (wp->xoff == 0 && screen_size_x(s) >= tty->sx && tty_term_has(tty->term, TTYC_EL)) { for (i = 0; i < screen_size_y(s); i++) { @@ -803,7 +810,7 @@ tty_cmd_alignmenttest(struct tty *tty, const struct tty_ctx *ctx) tty_reset(tty); - tty_region(tty, 0, screen_size_y(s) - 1, wp->yoff); + tty_region_pane(tty, ctx, 0, screen_size_y(s) - 1); for (j = 0; j < screen_size_y(s); j++) { tty_cursor(tty, 0, j, wp->xoff, wp->yoff); @@ -887,17 +894,29 @@ tty_reset(struct tty *tty) } void -tty_region(struct tty *tty, u_int rupper, u_int rlower, u_int oy) +tty_region_pane( + struct tty *tty, const struct tty_ctx *ctx, u_int rupper, u_int rlower) +{ + struct window_pane *wp = ctx->wp; + + tty_region_absolute(tty, wp->yoff + rupper, wp->yoff + rlower); +} + +void +tty_region_absolute(struct tty *tty, u_int rupper, u_int rlower) { + if (tty->rlower == rlower && tty->rupper == rupper) + return; if (!tty_term_has(tty->term, TTYC_CSR)) return; - if (tty->rlower != oy + rlower || tty->rupper != oy + rupper) { - tty->rlower = oy + rlower; - tty->rupper = oy + rupper; - tty->cx = 0; - tty->cy = 0; - tty_putcode2(tty, TTYC_CSR, tty->rupper, tty->rlower); - } + + tty->rupper = rupper; + tty->rlower = rlower; + + tty->cx = 0; + tty->cy = 0; + + tty_putcode2(tty, TTYC_CSR, tty->rupper, tty->rlower); } void |