=================================================================== RCS file: /cvsrepo/anoncvs/cvs/src/usr.bin/tmux/window.c,v retrieving revision 1.236 retrieving revision 1.237 diff -c -r1.236 -r1.237 *** src/usr.bin/tmux/window.c 2019/06/24 08:20:02 1.236 --- src/usr.bin/tmux/window.c 2019/06/26 13:03:47 1.237 *************** *** 1,4 **** ! /* $OpenBSD: window.c,v 1.236 2019/06/24 08:20:02 nicm Exp $ */ /* * Copyright (c) 2007 Nicholas Marriott --- 1,4 ---- ! /* $OpenBSD: window.c,v 1.237 2019/06/26 13:03:47 nicm Exp $ */ /* * Copyright (c) 2007 Nicholas Marriott *************** *** 1288,1312 **** struct window_pane * window_pane_find_up(struct window_pane *wp) { struct window_pane *next, *best, **list; u_int edge, left, right, end, size; int status, found; if (wp == NULL) return (NULL); ! status = options_get_number(wp->window->options, "pane-border-status"); list = NULL; size = 0; edge = wp->yoff; ! if (edge == (status == 1 ? 1 : 0)) ! edge = wp->window->sy + 1 - (status == 2 ? 1 : 0); left = wp->xoff; right = wp->xoff + wp->sx; ! TAILQ_FOREACH(next, &wp->window->panes, entry) { if (next == wp) continue; if (next->yoff + next->sy + 1 != edge) --- 1288,1322 ---- struct window_pane * window_pane_find_up(struct window_pane *wp) { + struct window *w; struct window_pane *next, *best, **list; u_int edge, left, right, end, size; int status, found; if (wp == NULL) return (NULL); ! w = wp->window; ! status = options_get_number(w->options, "pane-border-status"); list = NULL; size = 0; edge = wp->yoff; ! if (status == PANE_STATUS_TOP) { ! if (edge == 1) ! edge = w->sy + 1; ! } else if (status == PANE_STATUS_BOTTOM) { ! if (edge == 0) ! edge = w->sy; ! } else { ! if (edge == 0) ! edge = w->sy + 1; ! } left = wp->xoff; right = wp->xoff + wp->sx; ! TAILQ_FOREACH(next, &w->panes, entry) { if (next == wp) continue; if (next->yoff + next->sy + 1 != edge) *************** *** 1335,1359 **** struct window_pane * window_pane_find_down(struct window_pane *wp) { struct window_pane *next, *best, **list; u_int edge, left, right, end, size; int status, found; if (wp == NULL) return (NULL); ! status = options_get_number(wp->window->options, "pane-border-status"); list = NULL; size = 0; edge = wp->yoff + wp->sy + 1; ! if (edge >= wp->window->sy - (status == 2 ? 1 : 0)) ! edge = (status == 1 ? 1 : 0); left = wp->xoff; right = wp->xoff + wp->sx; ! TAILQ_FOREACH(next, &wp->window->panes, entry) { if (next == wp) continue; if (next->yoff != edge) --- 1345,1379 ---- struct window_pane * window_pane_find_down(struct window_pane *wp) { + struct window *w; struct window_pane *next, *best, **list; u_int edge, left, right, end, size; int status, found; if (wp == NULL) return (NULL); ! w = wp->window; ! status = options_get_number(w->options, "pane-border-status"); list = NULL; size = 0; edge = wp->yoff + wp->sy + 1; ! if (status == PANE_STATUS_TOP) { ! if (edge >= w->sy) ! edge = 1; ! } else if (status == PANE_STATUS_BOTTOM) { ! if (edge >= w->sy - 1) ! edge = 0; ! } else { ! if (edge >= wp->sy) ! edge = 0; ! } left = wp->xoff; right = wp->xoff + wp->sx; ! TAILQ_FOREACH(next, &w->panes, entry) { if (next == wp) continue; if (next->yoff != edge) *************** *** 1382,1405 **** struct window_pane * window_pane_find_left(struct window_pane *wp) { struct window_pane *next, *best, **list; u_int edge, top, bottom, end, size; int found; if (wp == NULL) return (NULL); list = NULL; size = 0; edge = wp->xoff; if (edge == 0) ! edge = wp->window->sx + 1; top = wp->yoff; bottom = wp->yoff + wp->sy; ! TAILQ_FOREACH(next, &wp->window->panes, entry) { if (next == wp) continue; if (next->xoff + next->sx + 1 != edge) --- 1402,1427 ---- struct window_pane * window_pane_find_left(struct window_pane *wp) { + struct window *w; struct window_pane *next, *best, **list; u_int edge, top, bottom, end, size; int found; if (wp == NULL) return (NULL); + w = wp->window; list = NULL; size = 0; edge = wp->xoff; if (edge == 0) ! edge = w->sx + 1; top = wp->yoff; bottom = wp->yoff + wp->sy; ! TAILQ_FOREACH(next, &w->panes, entry) { if (next == wp) continue; if (next->xoff + next->sx + 1 != edge) *************** *** 1428,1451 **** struct window_pane * window_pane_find_right(struct window_pane *wp) { struct window_pane *next, *best, **list; u_int edge, top, bottom, end, size; int found; if (wp == NULL) return (NULL); list = NULL; size = 0; edge = wp->xoff + wp->sx + 1; ! if (edge >= wp->window->sx) edge = 0; top = wp->yoff; bottom = wp->yoff + wp->sy; ! TAILQ_FOREACH(next, &wp->window->panes, entry) { if (next == wp) continue; if (next->xoff != edge) --- 1450,1475 ---- struct window_pane * window_pane_find_right(struct window_pane *wp) { + struct window *w; struct window_pane *next, *best, **list; u_int edge, top, bottom, end, size; int found; if (wp == NULL) return (NULL); + w = wp->window; list = NULL; size = 0; edge = wp->xoff + wp->sx + 1; ! if (edge >= w->sx) edge = 0; top = wp->yoff; bottom = wp->yoff + wp->sy; ! TAILQ_FOREACH(next, &w->panes, entry) { if (next == wp) continue; if (next->xoff != edge)