mirror of
https://github.com/tmux/tmux.git
synced 2024-12-04 19:58:48 +00:00
Be more sophisticated about enabling synchronized updates when there is
an overlay and treat it like the active pane (use for commands which move the cursor only). When there is an overlay also use it for all panes and not just the active pane. GitHub issue 2826.
This commit is contained in:
parent
1a7eb6ca90
commit
41ababdf6c
@ -197,9 +197,20 @@ screen_write_initctx(struct screen_write_ctx *ctx, struct tty_ctx *ttyctx,
|
||||
}
|
||||
}
|
||||
|
||||
if (ctx->wp != NULL &&
|
||||
(~ctx->flags & SCREEN_WRITE_SYNC) &&
|
||||
(sync || ctx->wp != ctx->wp->window->active)) {
|
||||
if (~ctx->flags & SCREEN_WRITE_SYNC) {
|
||||
/*
|
||||
* For the active pane or for an overlay (no pane), we want to
|
||||
* only use synchronized updates if requested (commands that
|
||||
* move the cursor); for other panes, always use it, since the
|
||||
* cursor will have to move.
|
||||
*/
|
||||
if (ctx->wp != NULL) {
|
||||
if (ctx->wp != ctx->wp->window->active)
|
||||
ttyctx->num = 1;
|
||||
else
|
||||
ttyctx->num = sync;
|
||||
} else
|
||||
ttyctx->num = 0x10|sync;
|
||||
tty_write(tty_cmd_syncstart, ttyctx);
|
||||
ctx->flags |= SCREEN_WRITE_SYNC;
|
||||
}
|
||||
|
17
tty.c
17
tty.c
@ -2039,9 +2039,22 @@ tty_cmd_rawstring(struct tty *tty, const struct tty_ctx *ctx)
|
||||
}
|
||||
|
||||
void
|
||||
tty_cmd_syncstart(struct tty *tty, __unused const struct tty_ctx *ctx)
|
||||
tty_cmd_syncstart(struct tty *tty, const struct tty_ctx *ctx)
|
||||
{
|
||||
tty_sync_start(tty);
|
||||
if (ctx->num == 0x11) {
|
||||
/*
|
||||
* This is an overlay and a command that moves, the cursor so
|
||||
* start synchronized updates.
|
||||
*/
|
||||
tty_sync_start(tty);
|
||||
} else if (~ctx->num & 0x10) {
|
||||
/*
|
||||
* This is a pane. If there is an overlay, always start;
|
||||
* otherwise, only if requested.
|
||||
*/
|
||||
if (ctx->num || tty->client->overlay_draw != NULL)
|
||||
tty_sync_start(tty);
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
|
Loading…
Reference in New Issue
Block a user