diff --git a/cmd-lock-server.c b/cmd-lock-server.c index 54f2efd2..55c19e38 100644 --- a/cmd-lock-server.c +++ b/cmd-lock-server.c @@ -45,6 +45,7 @@ int cmd_lock_server_exec(unused struct cmd *self, unused struct cmd_ctx *ctx) { server_lock(); + recalculate_sizes(); return (0); } diff --git a/resize.c b/resize.c index d549ea5b..5635f9d4 100644 --- a/resize.c +++ b/resize.c @@ -60,7 +60,7 @@ recalculate_sizes(void) ssx = ssy = UINT_MAX; for (j = 0; j < ARRAY_LENGTH(&clients); j++) { c = ARRAY_ITEM(&clients, j); - if (c == NULL) + if (c == NULL || c->flags & CLIENT_SUSPENDED) continue; if (c->session == s) { if (c->tty.sx < ssx) diff --git a/server-msg.c b/server-msg.c index b7b45c6c..ec085610 100644 --- a/server-msg.c +++ b/server-msg.c @@ -104,6 +104,7 @@ server_msg_dispatch(struct client *c) c->flags &= ~CLIENT_SUSPENDED; tty_start_tty(&c->tty); server_redraw_client(c); + recalculate_sizes(); server_activity = time(NULL); break; case MSG_ENVIRON: diff --git a/server.c b/server.c index 6dac5f5b..f7136784 100644 --- a/server.c +++ b/server.c @@ -1194,8 +1194,10 @@ server_second_timers(void) t = time(NULL); xtimeout = options_get_number(&global_s_options, "lock-after-time"); - if (xtimeout > 0 && t > server_activity + xtimeout) + if (xtimeout > 0 && t > server_activity + xtimeout) { server_lock(); + recalculate_sizes(); + } for (i = 0; i < ARRAY_LENGTH(&windows); i++) { w = ARRAY_ITEM(&windows, i);