diff options
author | 2013-03-21 18:46:12 +0000 | |
---|---|---|
committer | 2013-03-21 18:46:12 +0000 | |
commit | 36e7593135569ce52603c8a7f4ab9aff514ee5d0 (patch) | |
tree | 367b0546fe5065dcd12194a07ac106724aa78507 /usr.bin/tmux/resize.c | |
parent | more substantial include cleanup (diff) | |
download | wireguard-openbsd-36e7593135569ce52603c8a7f4ab9aff514ee5d0.tar.xz wireguard-openbsd-36e7593135569ce52603c8a7f4ab9aff514ee5d0.zip |
Do not include status line in size calculations in control mode.
Diffstat (limited to 'usr.bin/tmux/resize.c')
-rw-r--r-- | usr.bin/tmux/resize.c | 31 |
1 files changed, 17 insertions, 14 deletions
diff --git a/usr.bin/tmux/resize.c b/usr.bin/tmux/resize.c index b28f8873ece..dd3ef31dee2 100644 --- a/usr.bin/tmux/resize.c +++ b/usr.bin/tmux/resize.c @@ -1,4 +1,4 @@ -/* $OpenBSD: resize.c,v 1.8 2012/03/17 22:35:09 nicm Exp $ */ +/* $OpenBSD: resize.c,v 1.9 2013/03/21 18:46:12 nicm Exp $ */ /* * Copyright (c) 2007 Nicholas Marriott <nicm@users.sourceforge.net> @@ -49,10 +49,12 @@ recalculate_sizes(void) struct client *c; struct window *w; struct window_pane *wp; - u_int i, j, ssx, ssy, has, limit; - int flag; + u_int i, j, ssx, ssy, has, limit; + int flag, has_status; RB_FOREACH(s, sessions, &sessions) { + has_status = options_get_number(&s->options, "status"); + ssx = ssy = UINT_MAX; for (j = 0; j < ARRAY_LENGTH(&clients); j++) { c = ARRAY_ITEM(&clients, j); @@ -61,7 +63,11 @@ recalculate_sizes(void) if (c->session == s) { if (c->tty.sx < ssx) ssx = c->tty.sx; - if (c->tty.sy < ssy) + if (has_status && + !(c->flags & CLIENT_CONTROL) && + c->tty.sy > 1 && c->tty.sy - 1 < ssy) + ssy = c->tty.sy - 1; + else if (c->tty.sy < ssy) ssy = c->tty.sy; } } @@ -71,17 +77,14 @@ recalculate_sizes(void) } s->flags &= ~SESSION_UNATTACHED; - if (options_get_number(&s->options, "status")) { - if (ssy == 0) - ssy = 1; - else - ssy--; - } + if (has_status && ssy == 0) + ssy = 1; + if (s->sx == ssx && s->sy == ssy) continue; - log_debug( - "session size %u,%u (was %u,%u)", ssx, ssy, s->sx, s->sy); + log_debug("session size %u,%u (was %u,%u)", ssx, ssy, s->sx, + s->sy); s->sx = ssx; s->sy = ssy; @@ -121,8 +124,8 @@ recalculate_sizes(void) if (w->sx == ssx && w->sy == ssy) continue; - log_debug( - "window size %u,%u (was %u,%u)", ssx, ssy, w->sx, w->sy); + log_debug("window size %u,%u (was %u,%u)", ssx, ssy, w->sx, + w->sy); layout_resize(w, ssx, ssy); window_resize(w, ssx, ssy); |