summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--cmd-refresh-client.c4
-rw-r--r--resize.c3
-rw-r--r--tmux.h1
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);
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;