diff options
author | 2019-09-19 09:02:30 +0000 | |
---|---|---|
committer | 2019-09-19 09:02:30 +0000 | |
commit | f4f81a00557dfad34279abe62ce21732ae07678a (patch) | |
tree | 81382dac5aa6144673df2af3263f2fa29a0feae6 /usr.bin/tmux/server-client.c | |
parent | Do not use bright when emulating 256 colours on an 8 colour terminal (diff) | |
download | wireguard-openbsd-f4f81a00557dfad34279abe62ce21732ae07678a.tar.xz wireguard-openbsd-f4f81a00557dfad34279abe62ce21732ae07678a.zip |
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.
Diffstat (limited to 'usr.bin/tmux/server-client.c')
-rw-r--r-- | usr.bin/tmux/server-client.c | 23 |
1 files changed, 22 insertions, 1 deletions
diff --git a/usr.bin/tmux/server-client.c b/usr.bin/tmux/server-client.c index 253fc028801..2fdde1da8bc 100644 --- a/usr.bin/tmux/server-client.c +++ b/usr.bin/tmux/server-client.c @@ -1,4 +1,4 @@ -/* $OpenBSD: server-client.c,v 1.294 2019/08/28 07:34:32 nicm Exp $ */ +/* $OpenBSD: server-client.c,v 1.295 2019/09/19 09:02:30 nicm Exp $ */ /* * Copyright (c) 2009 Nicholas Marriott <nicholas.marriott@gmail.com> @@ -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(); |