=================================================================== RCS file: /cvsrepo/anoncvs/cvs/src/usr.bin/tmux/window-tree.c,v retrieving revision 1.37 retrieving revision 1.38 diff -c -r1.37 -r1.38 *** src/usr.bin/tmux/window-tree.c 2019/04/30 06:19:51 1.37 --- src/usr.bin/tmux/window-tree.c 2019/05/12 08:58:09 1.38 *************** *** 1,4 **** ! /* $OpenBSD: window-tree.c,v 1.37 2019/04/30 06:19:51 nicm Exp $ */ /* * Copyright (c) 2017 Nicholas Marriott --- 1,4 ---- ! /* $OpenBSD: window-tree.c,v 1.38 2019/05/12 08:58:09 nicm Exp $ */ /* * Copyright (c) 2017 Nicholas Marriott *************** *** 53,58 **** --- 53,71 ---- "}" \ "}" + #define WINDOW_TREE_MENU \ + "Select,Enter,|" \ + "Expand,Right,|" \ + "|" \ + "Tag,t,|" \ + "Tag All,C-t,|" \ + "Tag None,T,|" \ + "|" \ + "Kill,x,|" \ + "Kill Tagged,X,|" \ + "|" \ + "Cancel,q," + const struct window_mode window_tree_mode = { .name = "tree-mode", .default_format = WINDOW_TREE_DEFAULT_FORMAT, *************** *** 814,819 **** --- 827,845 ---- return (0); } + static void + window_tree_menu(void *modedata, struct client *c, key_code key) + { + struct window_tree_modedata *data = modedata; + struct window_pane *wp = data->wp; + struct window_mode_entry *wme; + + wme = TAILQ_FIRST(&wp->modes); + if (wme == NULL || wme->data != modedata) + return; + window_tree_key(wme, c, NULL, NULL, key, NULL); + } + static struct screen * window_tree_init(struct window_mode_entry *wme, struct cmd_find_state *fs, struct args *args) *************** *** 823,828 **** --- 849,856 ---- struct screen *s; wme->data = data = xcalloc(1, sizeof *data); + data->wp = wp; + data->references = 1; if (args_has(args, 's')) data->type = WINDOW_TREE_SESSION; *************** *** 832,840 **** data->type = WINDOW_TREE_PANE; memcpy(&data->fs, fs, sizeof data->fs); - data->wp = wp; - data->references = 1; - if (args == NULL || !args_has(args, 'F')) data->format = xstrdup(WINDOW_TREE_DEFAULT_FORMAT); else --- 860,865 ---- *************** *** 846,852 **** data->squash_groups = !args_has(args, 'G'); data->data = mode_tree_start(wp, args, window_tree_build, ! window_tree_draw, window_tree_search, data, window_tree_sort_list, nitems(window_tree_sort_list), &s); mode_tree_zoom(data->data, args); --- 871,878 ---- data->squash_groups = !args_has(args, 'G'); data->data = mode_tree_start(wp, args, window_tree_build, ! window_tree_draw, window_tree_search, window_tree_menu, data, ! WINDOW_TREE_MENU, window_tree_sort_list, nitems(window_tree_sort_list), &s); mode_tree_zoom(data->data, args); *************** *** 1146,1152 **** item = new_item; data->offset = 0; } ! if (KEYC_IS_MOUSE(key)) key = window_tree_mouse(data, key, x, item); switch (key) { case '<': --- 1172,1178 ---- item = new_item; data->offset = 0; } ! if (KEYC_IS_MOUSE(key) && m != NULL) key = window_tree_mouse(data, key, x, item); switch (key) { case '<': *************** *** 1207,1213 **** free(prompt); break; case '\r': - item = mode_tree_get_current(data->data); name = window_tree_get_target(item, &fs); if (name != NULL) mode_tree_run_command(c, NULL, data->command, name); --- 1233,1238 ----