diff options
author | nicm <nicm> | 2017-05-10 16:48:36 +0000 |
---|---|---|
committer | nicm <nicm> | 2017-05-10 16:48:36 +0000 |
commit | 2dc9bfd93afd26b76dfdbf4a22338a5ef85893bf (patch) | |
tree | b0298a256138214105c8481b4e0128b3aa861309 | |
parent | 9dc6946ebf359ec811cc4bb8b68ea9862b496369 (diff) | |
download | rtmux-2dc9bfd93afd26b76dfdbf4a22338a5ef85893bf.tar.gz rtmux-2dc9bfd93afd26b76dfdbf4a22338a5ef85893bf.tar.bz2 rtmux-2dc9bfd93afd26b76dfdbf4a22338a5ef85893bf.zip |
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.
-rw-r--r-- | cmd-refresh-client.c | 4 | ||||
-rw-r--r-- | resize.c | 3 | ||||
-rw-r--r-- | tmux.h | 1 |
3 files changed, 7 insertions, 1 deletions
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); @@ -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; @@ -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; |