=================================================================== RCS file: /cvsrepo/anoncvs/cvs/src/usr.bin/tmux/Attic/layout-manual.c,v retrieving revision 1.1 retrieving revision 1.2 diff -c -r1.1 -r1.2 *** src/usr.bin/tmux/Attic/layout-manual.c 2009/06/01 22:58:49 1.1 --- src/usr.bin/tmux/Attic/layout-manual.c 2009/07/14 07:23:36 1.2 *************** *** 1,4 **** ! /* $OpenBSD: layout-manual.c,v 1.1 2009/06/01 22:58:49 nicm Exp $ */ /* * Copyright (c) 2009 Nicholas Marriott --- 1,4 ---- ! /* $OpenBSD: layout-manual.c,v 1.2 2009/07/14 07:23:36 nicm Exp $ */ /* * Copyright (c) 2009 Nicholas Marriott *************** *** 26,32 **** layout_manual_v_refresh(struct window *w, unused int active_only) { struct window_pane *wp; ! u_int npanes, canfit, total; int left; if (active_only) --- 26,32 ---- layout_manual_v_refresh(struct window *w, unused int active_only) { struct window_pane *wp; ! u_int npanes, total, height; int left; if (active_only) *************** *** 35,68 **** if (TAILQ_EMPTY(&w->panes)) return; - /* Clear hidden flags. */ - TAILQ_FOREACH(wp, &w->panes, entry) - wp->flags &= ~PANE_HIDDEN; - /* Check the new size. */ npanes = window_count_panes(w); if (w->sy <= PANE_MINIMUM * npanes) { ! /* How many can we fit? */ ! canfit = w->sy / PANE_MINIMUM; ! if (canfit == 0) { ! /* None. Just use this size for the first. */ ! TAILQ_FOREACH(wp, &w->panes, entry) { ! if (wp == TAILQ_FIRST(&w->panes)) ! wp->sy = w->sy; ! else ! wp->flags |= PANE_HIDDEN; ! } ! } else { ! /* >=1, set minimum for them all. */ ! TAILQ_FOREACH(wp, &w->panes, entry) { ! if (canfit-- > 0) ! wp->sy = PANE_MINIMUM - 1; ! else ! wp->flags |= PANE_HIDDEN; ! } ! /* And increase the first by the rest. */ ! TAILQ_FIRST(&w->panes)->sy += 1 + w->sy % PANE_MINIMUM; } } else { /* In theory they will all fit. Find the current total. */ total = 0; --- 35,59 ---- if (TAILQ_EMPTY(&w->panes)) return; /* Check the new size. */ npanes = window_count_panes(w); if (w->sy <= PANE_MINIMUM * npanes) { ! /* ! * Make the first pane the smaller of the minimum and total (it ! * must fit to be visible) and the rest the minimum size. ! */ ! height = PANE_MINIMUM; ! if (height > w->sy) ! height = w->sy + 1; ! TAILQ_FOREACH(wp, &w->panes, entry) { ! if (wp == TAILQ_FIRST(&w->panes)) ! wp->sy = height - 1; ! else ! wp->sy = PANE_MINIMUM - 1; } + /* And increase the first by the rest if possible. */ + if (w->sy >= PANE_MINIMUM) + TAILQ_FIRST(&w->panes)->sy += 1 + w->sy % PANE_MINIMUM; } else { /* In theory they will all fit. Find the current total. */ total = 0; *************** *** 174,181 **** yoff = 0; TAILQ_FOREACH(wp, &w->panes, entry) { - if (wp->flags & PANE_HIDDEN) - continue; wp->xoff = 0; wp->yoff = yoff; yoff += wp->sy + 1; --- 165,170 ----