summaryrefslogtreecommitdiffstats
path: root/usr.bin/tmux/resize.c
diff options
context:
space:
mode:
authornicm <nicm@openbsd.org>2013-03-21 18:46:12 +0000
committernicm <nicm@openbsd.org>2013-03-21 18:46:12 +0000
commit36e7593135569ce52603c8a7f4ab9aff514ee5d0 (patch)
tree367b0546fe5065dcd12194a07ac106724aa78507 /usr.bin/tmux/resize.c
parentmore substantial include cleanup (diff)
downloadwireguard-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.c31
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);