summaryrefslogtreecommitdiffstats
path: root/cmd-display-menu.c
diff options
context:
space:
mode:
authorThomas Adam <thomas@xteddy.org>2023-01-21 00:01:11 +0000
committerThomas Adam <thomas@xteddy.org>2023-01-21 00:01:11 +0000
commitc42087c789ac514efb8cfcc41b0f51dfe16702ee (patch)
tree5d5dd118fffaec362f3e9d2922d514049f97e5d1 /cmd-display-menu.c
parentc4a6f403bb9d7c24c291f01dee9572bb4b784096 (diff)
parent3aa458ea6398b0de37c3e146304bd2a4e17ea3c0 (diff)
Merge branch 'obsd-master'
Diffstat (limited to 'cmd-display-menu.c')
-rw-r--r--cmd-display-menu.c29
1 files changed, 22 insertions, 7 deletions
diff --git a/cmd-display-menu.c b/cmd-display-menu.c
index e6a503b1..22cc5d9f 100644
--- a/cmd-display-menu.c
+++ b/cmd-display-menu.c
@@ -38,9 +38,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 },
@@ -287,13 +288,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
@@ -340,8 +355,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);
}