=================================================================== RCS file: /cvsrepo/anoncvs/cvs/src/usr.bin/tmux/format.c,v retrieving revision 1.295 retrieving revision 1.296 diff -c -r1.295 -r1.296 *** src/usr.bin/tmux/format.c 2021/10/05 12:45:02 1.295 --- src/usr.bin/tmux/format.c 2021/10/05 17:23:13 1.296 *************** *** 1,4 **** ! /* $OpenBSD: format.c,v 1.295 2021/10/05 12:45:02 nicm Exp $ */ /* * Copyright (c) 2011 Nicholas Marriott --- 1,4 ---- ! /* $OpenBSD: format.c,v 1.296 2021/10/05 17:23:13 nicm Exp $ */ /* * Copyright (c) 2011 Nicholas Marriott *************** *** 1614,1624 **** struct window_pane *wp; u_int x, y; ! if (ft->m.valid) { ! wp = cmd_mouse_pane(&ft->m, NULL, NULL); ! if (wp != NULL && cmd_mouse_at(wp, &ft->m, &x, &y, 0) == 0) ! return (format_printf("%u", x)); return (NULL); } return (NULL); } --- 1614,1629 ---- struct window_pane *wp; u_int x, y; ! if (!ft->m.valid) return (NULL); + wp = cmd_mouse_pane(&ft->m, NULL, NULL); + if (wp != NULL && cmd_mouse_at(wp, &ft->m, &x, &y, 0) == 0) + return (format_printf("%u", x)); + if (ft->c != NULL && (ft->c->tty.flags & TTY_STARTED)) { + if (ft->m.statusat == 0 && ft->m.y < ft->m.statuslines) + return (format_printf("%u", ft->m.x)); + if (ft->m.statusat > 0 && ft->m.y >= ft->m.statusat) + return (format_printf("%u", ft->m.x)); } return (NULL); } *************** *** 1628,1640 **** format_cb_mouse_y(struct format_tree *ft) { struct window_pane *wp; ! u_int x, y; ! if (ft->m.valid) { ! wp = cmd_mouse_pane(&ft->m, NULL, NULL); ! if (wp != NULL && cmd_mouse_at(wp, &ft->m, &x, &y, 0) == 0) ! return (format_printf("%u", y)); return (NULL); } return (NULL); } --- 1633,1650 ---- format_cb_mouse_y(struct format_tree *ft) { struct window_pane *wp; ! u_int x, y, top; ! if (!ft->m.valid) return (NULL); + wp = cmd_mouse_pane(&ft->m, NULL, NULL); + if (wp != NULL && cmd_mouse_at(wp, &ft->m, &x, &y, 0) == 0) + return (format_printf("%u", y)); + if (ft->c != NULL && (ft->c->tty.flags & TTY_STARTED)) { + if (ft->m.statusat == 0 && ft->m.y < ft->m.statuslines) + return (format_printf("%u", ft->m.y)); + if (ft->m.statusat > 0 && ft->m.y >= ft->m.statusat) + return (format_printf("%u", ft->m.y - ft->m.statusat)); } return (NULL); }