diff options
author | nicm <nicm> | 2019-09-19 09:02:30 +0000 |
---|---|---|
committer | nicm <nicm> | 2019-09-19 09:02:30 +0000 |
commit | 647887b794c00285047aa54ac0d44ae50c7847d7 (patch) | |
tree | c173a9c9f68dd40248df0b0685189241c074ec4d /server-client.c | |
parent | d01847735903496c25e1d24375b911edffa56ef8 (diff) | |
download | rtmux-647887b794c00285047aa54ac0d44ae50c7847d7.tar.gz rtmux-647887b794c00285047aa54ac0d44ae50c7847d7.tar.bz2 rtmux-647887b794c00285047aa54ac0d44ae50c7847d7.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 'server-client.c')
-rw-r--r-- | server-client.c | 21 |
1 files changed, 21 insertions, 0 deletions
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(); |