summaryrefslogtreecommitdiffstats
path: root/resize.c
diff options
context:
space:
mode:
authornicm <nicm>2014-11-14 02:19:47 +0000
committernicm <nicm>2014-11-14 02:19:47 +0000
commite0929262db947f984964f979a23215c0de75ceb2 (patch)
treee09954e2ff09b3b9d309caf7b5c8d8630b6a0b3f /resize.c
parent7cc470664616e7acbaaec65da760fd905e8e652d (diff)
Label windows which are smaller than expected with a reason.
Diffstat (limited to 'resize.c')
-rw-r--r--resize.c14
1 files changed, 11 insertions, 3 deletions
diff --git a/resize.c b/resize.c
index 73a728fa..9ad73c81 100644
--- a/resize.c
+++ b/resize.c
@@ -50,7 +50,7 @@ recalculate_sizes(void)
struct window *w;
struct window_pane *wp;
u_int i, j, ssx, ssy, has, limit;
- int flag, has_status, is_zoomed;
+ int flag, has_status, is_zoomed, forced;
RB_FOREACH(s, sessions, &sessions) {
has_status = options_get_number(&s->options, "status");
@@ -116,18 +116,26 @@ recalculate_sizes(void)
if (ssx == UINT_MAX || ssy == UINT_MAX)
continue;
+ forced = 0;
limit = options_get_number(&w->options, "force-width");
- if (limit >= PANE_MINIMUM && ssx > limit)
+ if (limit >= PANE_MINIMUM && ssx > limit) {
ssx = limit;
+ forced |= WINDOW_FORCEWIDTH;
+ }
limit = options_get_number(&w->options, "force-height");
- if (limit >= PANE_MINIMUM && ssy > limit)
+ if (limit >= PANE_MINIMUM && ssy > limit) {
ssy = limit;
+ forced |= WINDOW_FORCEHEIGHT;
+ }
if (w->sx == ssx && w->sy == ssy)
continue;
log_debug("window size %u,%u (was %u,%u)", ssx, ssy, w->sx,
w->sy);
+ w->flags &= ~(WINDOW_FORCEWIDTH|WINDOW_FORCEHEIGHT);
+ w->flags |= forced;
+
is_zoomed = w->flags & WINDOW_ZOOMED;
if (is_zoomed)
window_unzoom(w);