From 2dc9bfd93afd26b76dfdbf4a22338a5ef85893bf Mon Sep 17 00:00:00 2001 From: nicm Date: Wed, 10 May 2017 16:48:36 +0000 Subject: Prevent control clients from affecting the session size until they have specified a size with refresh-client -C. Prompted by a different change with the same purpose from George Nachman. --- cmd-refresh-client.c | 4 +++- resize.c | 3 +++ tmux.h | 1 + 3 files changed, 7 insertions(+), 1 deletion(-) diff --git a/cmd-refresh-client.c b/cmd-refresh-client.c index 5190df89..6af3362b 100644 --- a/cmd-refresh-client.c +++ b/cmd-refresh-client.c @@ -67,8 +67,10 @@ cmd_refresh_client_exec(struct cmd *self, struct cmdq_item *item) cmdq_error(item, "not a control client"); return (CMD_RETURN_ERROR); } - if (tty_set_size(&c->tty, w, h)) + if (tty_set_size(&c->tty, w, h)) { + c->flags |= CLIENT_SIZECHANGED; recalculate_sizes(); + } } else if (args_has(args, 'S')) { c->flags |= CLIENT_STATUSFORCE; server_status_client(c); diff --git a/resize.c b/resize.c index ff1c9eec..4c41f769 100644 --- a/resize.c +++ b/resize.c @@ -60,6 +60,9 @@ recalculate_sizes(void) TAILQ_FOREACH(c, &clients, entry) { if (c->flags & CLIENT_SUSPENDED) continue; + if ((c->flags & (CLIENT_CONTROL|CLIENT_SIZECHANGED)) == + CLIENT_CONTROL) + continue; if (c->session == s) { if (c->tty.sx < ssx) ssx = c->tty.sx; diff --git a/tmux.h b/tmux.h index 9d0cd960..5fd57ee4 100644 --- a/tmux.h +++ b/tmux.h @@ -1345,6 +1345,7 @@ struct client { #define CLIENT_STATUSFORCE 0x80000 #define CLIENT_DOUBLECLICK 0x100000 #define CLIENT_TRIPLECLICK 0x200000 +#define CLIENT_SIZECHANGED 0x400000 int flags; struct key_table *keytable; -- cgit