=================================================================== RCS file: /cvsrepo/anoncvs/cvs/src/usr.bin/tmux/cmd-find.c,v retrieving revision 1.55 retrieving revision 1.56 diff -c -r1.55 -r1.56 *** src/usr.bin/tmux/cmd-find.c 2017/07/07 07:13:14 1.55 --- src/usr.bin/tmux/cmd-find.c 2017/08/28 12:36:38 1.56 *************** *** 1,4 **** ! /* $OpenBSD: cmd-find.c,v 1.55 2017/07/07 07:13:14 nicm Exp $ */ /* * Copyright (c) 2015 Nicholas Marriott --- 1,4 ---- ! /* $OpenBSD: cmd-find.c,v 1.56 2017/08/28 12:36:38 nicm Exp $ */ /* * Copyright (c) 2015 Nicholas Marriott *************** *** 510,516 **** /* Check for pane ids starting with %. */ if (*pane == '%') { fs->wp = window_pane_find_by_id_str(pane); ! if (fs->wp == NULL || window_pane_outside(fs->wp)) return (-1); fs->w = fs->wp->window; return (cmd_find_best_session_with_window(fs)); --- 510,516 ---- /* Check for pane ids starting with %. */ if (*pane == '%') { fs->wp = window_pane_find_by_id_str(pane); ! if (fs->wp == NULL) return (-1); fs->w = fs->wp->window; return (cmd_find_best_session_with_window(fs)); *************** *** 547,553 **** /* Check for pane ids starting with %. */ if (*pane == '%') { fs->wp = window_pane_find_by_id_str(pane); ! if (fs->wp == NULL || window_pane_outside(fs->wp)) return (-1); fs->w = fs->wp->window; return (cmd_find_best_winlink_with_window(fs)); --- 547,553 ---- /* Check for pane ids starting with %. */ if (*pane == '%') { fs->wp = window_pane_find_by_id_str(pane); ! if (fs->wp == NULL) return (-1); fs->w = fs->wp->window; return (cmd_find_best_winlink_with_window(fs)); *************** *** 579,585 **** /* Check for pane ids starting with %. */ if (*pane == '%') { fs->wp = window_pane_find_by_id_str(pane); ! if (fs->wp == NULL || window_pane_outside(fs->wp)) return (-1); if (fs->wp->window != fs->w) return (-1); --- 579,585 ---- /* Check for pane ids starting with %. */ if (*pane == '%') { fs->wp = window_pane_find_by_id_str(pane); ! if (fs->wp == NULL) return (-1); if (fs->wp->window != fs->w) return (-1); *************** *** 591,617 **** if (fs->w->last == NULL) return (-1); fs->wp = fs->w->last; ! if (fs->wp == NULL || window_pane_outside(fs->wp)) return (-1); return (0); } else if (strcmp(pane, "{up-of}") == 0) { fs->wp = window_pane_find_up(fs->w->active); ! if (fs->wp == NULL || window_pane_outside(fs->wp)) return (-1); return (0); } else if (strcmp(pane, "{down-of}") == 0) { fs->wp = window_pane_find_down(fs->w->active); ! if (fs->wp == NULL || window_pane_outside(fs->wp)) return (-1); return (0); } else if (strcmp(pane, "{left-of}") == 0) { fs->wp = window_pane_find_left(fs->w->active); ! if (fs->wp == NULL || window_pane_outside(fs->wp)) return (-1); return (0); } else if (strcmp(pane, "{right-of}") == 0) { fs->wp = window_pane_find_right(fs->w->active); ! if (fs->wp == NULL || window_pane_outside(fs->wp)) return (-1); return (0); } --- 591,617 ---- if (fs->w->last == NULL) return (-1); fs->wp = fs->w->last; ! if (fs->wp == NULL) return (-1); return (0); } else if (strcmp(pane, "{up-of}") == 0) { fs->wp = window_pane_find_up(fs->w->active); ! if (fs->wp == NULL) return (-1); return (0); } else if (strcmp(pane, "{down-of}") == 0) { fs->wp = window_pane_find_down(fs->w->active); ! if (fs->wp == NULL) return (-1); return (0); } else if (strcmp(pane, "{left-of}") == 0) { fs->wp = window_pane_find_left(fs->w->active); ! if (fs->wp == NULL) return (-1); return (0); } else if (strcmp(pane, "{right-of}") == 0) { fs->wp = window_pane_find_right(fs->w->active); ! if (fs->wp == NULL) return (-1); return (0); } *************** *** 627,633 **** fs->wp = window_pane_next_by_number(fs->w, wp, n); else fs->wp = window_pane_previous_by_number(fs->w, wp, n); ! if (fs->wp != NULL && !window_pane_outside(fs->wp)) return (0); } --- 627,633 ---- fs->wp = window_pane_next_by_number(fs->w, wp, n); else fs->wp = window_pane_previous_by_number(fs->w, wp, n); ! if (fs->wp != NULL) return (0); } *************** *** 635,647 **** idx = strtonum(pane, 0, INT_MAX, &errstr); if (errstr == NULL) { fs->wp = window_pane_at_index(fs->w, idx); ! if (fs->wp != NULL && !window_pane_outside(fs->wp)) return (0); } /* Try as a description. */ fs->wp = window_find_string(fs->w, pane); ! if (fs->wp != NULL && !window_pane_outside(fs->wp)) return (0); return (-1); --- 635,647 ---- idx = strtonum(pane, 0, INT_MAX, &errstr); if (errstr == NULL) { fs->wp = window_pane_at_index(fs->w, idx); ! if (fs->wp != NULL) return (0); } /* Try as a description. */ fs->wp = window_find_string(fs->w, pane); ! if (fs->wp != NULL) return (0); return (-1); *************** *** 689,697 **** if (fs->w != fs->wl->window) return (0); ! if (!window_has_pane(fs->w, fs->wp)) ! return (0); ! return (!window_pane_outside(fs->wp)); } /* Copy a state. */ --- 689,695 ---- if (fs->w != fs->wl->window) return (0); ! return (window_has_pane(fs->w, fs->wp)); } /* Copy a state. */ *************** *** 818,827 **** { if (cmd_find_from_window(fs, wp->window) != 0) return (-1); - if (window_pane_outside(wp)) { - cmd_find_clear_state(fs, 0); - return (-1); - } fs->wp = wp; cmd_find_log_state(__func__, fs); --- 816,821 ---- *************** *** 1016,1022 **** switch (type) { case CMD_FIND_PANE: fs->wp = cmd_mouse_pane(m, &fs->s, &fs->wl); ! if (fs->wp != NULL && !window_pane_outside(fs->wp)) fs->w = fs->wl->window; break; case CMD_FIND_WINDOW: --- 1010,1016 ---- switch (type) { case CMD_FIND_PANE: fs->wp = cmd_mouse_pane(m, &fs->s, &fs->wl); ! if (fs->wp != NULL) fs->w = fs->wl->window; break; case CMD_FIND_WINDOW: