diff options
author | nicm <nicm> | 2023-01-20 21:36:00 +0000 |
---|---|---|
committer | nicm <nicm> | 2023-01-20 21:36:00 +0000 |
commit | 3aa458ea6398b0de37c3e146304bd2a4e17ea3c0 (patch) | |
tree | c7940f0d27db91583fd08b9099409a8998a6b087 /cmd-display-menu.c | |
parent | 9789ea3fb4b3215e48b3f0024e2c21c50f95edec (diff) | |
download | rtmux-3aa458ea6398b0de37c3e146304bd2a4e17ea3c0.tar.gz rtmux-3aa458ea6398b0de37c3e146304bd2a4e17ea3c0.tar.bz2 rtmux-3aa458ea6398b0de37c3e146304bd2a4e17ea3c0.zip |
Add a flag to display-menu to select the manu item chosen first, GitHub
issue 3442.
Diffstat (limited to 'cmd-display-menu.c')
-rw-r--r-- | cmd-display-menu.c | 29 |
1 files changed, 22 insertions, 7 deletions
diff --git a/cmd-display-menu.c b/cmd-display-menu.c index 6ecfad29..deff4907 100644 --- a/cmd-display-menu.c +++ b/cmd-display-menu.c @@ -39,9 +39,10 @@ const struct cmd_entry cmd_display_menu_entry = { .name = "display-menu", .alias = "menu", - .args = { "c:t:OT:x:y:", 1, -1, cmd_display_menu_args_parse }, - .usage = "[-O] [-c target-client] " CMD_TARGET_PANE_USAGE " [-T title] " - "[-x position] [-y position] name key command ...", + .args = { "c:t:S:OT:x:y:", 1, -1, cmd_display_menu_args_parse }, + .usage = "[-O] [-c target-client] [-S starting-choice] " + CMD_TARGET_PANE_USAGE " [-T title] [-x position] " + "[-y position] name key command ...", .target = { 't', CMD_FIND_PANE, 0 }, @@ -288,13 +289,27 @@ cmd_display_menu_exec(struct cmd *self, struct cmdq_item *item) struct menu *menu = NULL; struct menu_item menu_item; const char *key, *name; - char *title; - int flags = 0; + char *title, *cause; + int flags = 0, starting_choice = 0; u_int px, py, i, count = args_count(args); if (tc->overlay_draw != NULL) return (CMD_RETURN_NORMAL); + if (args_has(args, 'S')) { + if (strcmp(args_get(args, 'S'), "-") == 0) + starting_choice = -1; + else { + starting_choice = args_strtonum(args, 'S', 0, UINT_MAX, + &cause); + if (cause != NULL) { + cmdq_error(item, "starting choice %s", cause); + free(cause); + return (CMD_RETURN_ERROR); + } + } + } + if (args_has(args, 'T')) title = format_single_from_target(item, args_get(args, 'T')); else @@ -341,8 +356,8 @@ cmd_display_menu_exec(struct cmd *self, struct cmdq_item *item) flags |= MENU_STAYOPEN; if (!event->m.valid) flags |= MENU_NOMOUSE; - if (menu_display(menu, flags, item, px, py, tc, target, NULL, - NULL) != 0) + if (menu_display(menu, flags, starting_choice, item, px, py, tc, target, + NULL, NULL) != 0) return (CMD_RETURN_NORMAL); return (CMD_RETURN_WAIT); } |