=================================================================== RCS file: /cvsrepo/anoncvs/cvs/src/usr.bin/tmux/menu.c,v retrieving revision 1.31 retrieving revision 1.32 diff -c -r1.31 -r1.32 *** src/usr.bin/tmux/menu.c 2020/09/16 18:37:55 1.31 --- src/usr.bin/tmux/menu.c 2020/10/30 08:55:56 1.32 *************** *** 1,4 **** ! /* $OpenBSD: menu.c,v 1.31 2020/09/16 18:37:55 nicm Exp $ */ /* * Copyright (c) 2019 Nicholas Marriott --- 1,4 ---- ! /* $OpenBSD: menu.c,v 1.32 2020/10/30 08:55:56 nicm Exp $ */ /* * Copyright (c) 2019 Nicholas Marriott *************** *** 203,218 **** m->x > md->px + 4 + menu->width || m->y < md->py + 1 || m->y > md->py + 1 + count - 1) { ! if (MOUSE_RELEASE(m->b)) ! return (1); if (md->choice != -1) { md->choice = -1; c->flags |= CLIENT_REDRAWOVERLAY; } return (0); } ! if (MOUSE_RELEASE(m->b)) ! goto chosen; md->choice = m->y - (md->py + 1); if (md->choice != old) c->flags |= CLIENT_REDRAWOVERLAY; --- 203,230 ---- m->x > md->px + 4 + menu->width || m->y < md->py + 1 || m->y > md->py + 1 + count - 1) { ! if (~md->flags & MENU_STAYOPEN) { ! if (MOUSE_RELEASE(m->b)) ! return (1); ! } else { ! if (!MOUSE_RELEASE(m->b) && ! MOUSE_WHEEL(m->b) == 0 && ! !MOUSE_DRAG(m->b)) ! return (1); ! } if (md->choice != -1) { md->choice = -1; c->flags |= CLIENT_REDRAWOVERLAY; } return (0); } ! if (~md->flags & MENU_STAYOPEN) { ! if (MOUSE_RELEASE(m->b)) ! goto chosen; ! } else { ! if (MOUSE_WHEEL(m->b) == 0 && !MOUSE_DRAG(m->b)) ! goto chosen; ! } md->choice = m->y - (md->py + 1); if (md->choice != old) c->flags |= CLIENT_REDRAWOVERLAY; *************** *** 303,308 **** --- 315,322 ---- if (md->choice == -1) return (1); item = &menu->items[md->choice]; + if ((md->flags & MENU_STAYOPEN) && item->name == NULL) + return (0); if (item->name == NULL || *item->name == '-') return (1); if (md->cb != NULL) {