From 647887b794c00285047aa54ac0d44ae50c7847d7 Mon Sep 17 00:00:00 2001 From: nicm Date: Thu, 19 Sep 2019 09:02:30 +0000 Subject: Add a "latest" window-size option which tries to size windows based on the most recently used client. From Tommie Gannert in GitHub issue 1869 based on earlier changes from me. --- server-client.c | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) (limited to 'server-client.c') diff --git a/server-client.c b/server-client.c index 4b60f5c0..36ebf85b 100644 --- a/server-client.c +++ b/server-client.c @@ -996,6 +996,24 @@ server_client_assume_paste(struct session *s) return (0); } +/* Has the latest client changed? */ +static void +server_client_update_latest(struct client *c) +{ + struct window *w; + + if (c->session == NULL) + return; + w = c->session->curw->window; + + if (w->latest == c) + return; + w->latest = c; + + if (options_get_number(w->options, "window-size") == WINDOW_SIZE_LATEST) + recalculate_size(w); +} + /* * Handle data key input from client. This owns and can modify the key event it * is given and is responsible for freeing it. @@ -1192,6 +1210,8 @@ forward_key: window_pane_key(wp, c, s, wl, key, m); out: + if (s != NULL) + server_client_update_latest(c); free(event); return (CMD_RETURN_NORMAL); } @@ -1737,6 +1757,7 @@ server_client_dispatch(struct imsg *imsg, void *arg) if (c->flags & CLIENT_CONTROL) break; + server_client_update_latest(c); server_client_clear_overlay(c); tty_resize(&c->tty); recalculate_sizes(); -- cgit