From 385bf084a5db9f889352aae5f55d7a52b23afc72 Mon Sep 17 00:00:00 2001 From: nicm Date: Sun, 28 May 2017 19:00:52 +0000 Subject: [PATCH 1/2] Also recalculate session sizes when refreh-client -C is used. GitHub issue 947. --- cmd-refresh-client.c | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/cmd-refresh-client.c b/cmd-refresh-client.c index 6af3362b..df1d2135 100644 --- a/cmd-refresh-client.c +++ b/cmd-refresh-client.c @@ -67,10 +67,9 @@ 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)) { - c->flags |= CLIENT_SIZECHANGED; - recalculate_sizes(); - } + 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); From dbc8cae18cabcd6e4d0ccfecda963563a514df52 Mon Sep 17 00:00:00 2001 From: nicm Date: Sun, 28 May 2017 19:46:55 +0000 Subject: [PATCH 2/2] Change so that sessions created detached (-d or no client) are always 80x24 and the status line is not applied until they attach. Also make -x and -y work for control clients whether the session is detached or not. --- cmd-new-session.c | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/cmd-new-session.c b/cmd-new-session.c index 1813288d..efddc228 100644 --- a/cmd-new-session.c +++ b/cmd-new-session.c @@ -77,6 +77,7 @@ cmd_new_session_exec(struct cmd *self, struct cmdq_item *item) const char *path, *cmd, *cwd, *to_free = NULL; char **argv, *cause, *cp; int detached, already_attached, idx, argc; + int is_control = 0; u_int sx, sy; struct environ_entry *envent; struct cmd_find_state fs; @@ -139,6 +140,8 @@ cmd_new_session_exec(struct cmd *self, struct cmdq_item *item) detached = args_has(args, 'd'); if (c == NULL) detached = 1; + else if (c->flags & CLIENT_CONTROL) + is_control = 1; /* Is this client already attached? */ already_attached = 0; @@ -185,29 +188,31 @@ cmd_new_session_exec(struct cmd *self, struct cmdq_item *item) } /* Find new session size. */ - if (c != NULL) { + if (!detached) { sx = c->tty.sx; sy = c->tty.sy; + if (!is_control && + sy > 0 && + options_get_number(global_s_options, "status")) + sy--; } else { sx = 80; sy = 24; } - if (detached && args_has(args, 'x')) { + if ((is_control || detached) && args_has(args, 'x')) { sx = strtonum(args_get(args, 'x'), 1, USHRT_MAX, &errstr); if (errstr != NULL) { cmdq_error(item, "width %s", errstr); goto error; } } - if (detached && args_has(args, 'y')) { + if ((is_control || detached) && args_has(args, 'y')) { sy = strtonum(args_get(args, 'y'), 1, USHRT_MAX, &errstr); if (errstr != NULL) { cmdq_error(item, "height %s", errstr); goto error; } } - if (sy > 0 && options_get_number(global_s_options, "status")) - sy--; if (sx == 0) sx = 1; if (sy == 0)