=================================================================== RCS file: /cvsrepo/anoncvs/cvs/src/usr.bin/tmux/window.c,v retrieving revision 1.117 retrieving revision 1.118 diff -c -r1.117 -r1.118 *** src/usr.bin/tmux/window.c 2015/04/19 21:05:27 1.117 --- src/usr.bin/tmux/window.c 2015/04/19 21:34:21 1.118 *************** *** 1,4 **** ! /* $OpenBSD: window.c,v 1.117 2015/04/19 21:05:27 nicm Exp $ */ /* * Copyright (c) 2007 Nicholas Marriott --- 1,4 ---- ! /* $OpenBSD: window.c,v 1.118 2015/04/19 21:34:21 nicm Exp $ */ /* * Copyright (c) 2007 Nicholas Marriott *************** *** 387,392 **** --- 387,404 ---- } int + window_has_pane(struct window *w, struct window_pane *wp) + { + struct window_pane *wp1; + + TAILQ_FOREACH(wp1, &w->panes, entry) { + if (wp1 == wp) + return (1); + } + return (0); + } + + int window_set_active_pane(struct window *w, struct window_pane *wp) { if (wp == w->active) *************** *** 1052,1101 **** } void ! window_pane_key(struct window_pane *wp, struct session *sess, int key) { struct window_pane *wp2; if (wp->mode != NULL) { if (wp->mode->key != NULL) ! wp->mode->key(wp, sess, key); return; } if (wp->fd == -1 || wp->flags & PANE_INPUTOFF) return; ! input_key(wp, key); if (options_get_number(&wp->window->options, "synchronize-panes")) { TAILQ_FOREACH(wp2, &wp->window->panes, entry) { if (wp2 == wp || wp2->mode != NULL) continue; if (wp2->fd != -1 && window_pane_visible(wp2)) ! input_key(wp2, key); } } - } - - void - window_pane_mouse(struct window_pane *wp, struct session *sess, - struct mouse_event *m) - { - if (!window_pane_visible(wp)) - return; - - if (m->x < wp->xoff || m->x >= wp->xoff + wp->sx) - return; - if (m->y < wp->yoff || m->y >= wp->yoff + wp->sy) - return; - m->x -= wp->xoff; - m->y -= wp->yoff; - - if (wp->mode != NULL) { - if (wp->mode->mouse != NULL && - options_get_number(&wp->window->options, "mode-mouse")) - wp->mode->mouse(wp, sess, m); - } else if (wp->fd != -1) - input_mouse(wp, sess, m); } int --- 1064,1098 ---- } void ! window_pane_key(struct window_pane *wp, struct client *c, struct session *s, ! int key, struct mouse_event *m) { struct window_pane *wp2; + if (KEYC_IS_MOUSE(key) && m == NULL) + return; + if (wp->mode != NULL) { if (wp->mode->key != NULL) ! wp->mode->key(wp, c, s, key, m); return; } if (wp->fd == -1 || wp->flags & PANE_INPUTOFF) return; ! input_key(wp, key, m); ! ! if (KEYC_IS_MOUSE(key)) ! return; if (options_get_number(&wp->window->options, "synchronize-panes")) { TAILQ_FOREACH(wp2, &wp->window->panes, entry) { if (wp2 == wp || wp2->mode != NULL) continue; if (wp2->fd != -1 && window_pane_visible(wp2)) ! input_key(wp2, key, NULL); } } } int