diff options
author | Thomas Adam <thomas@xteddy.org> | 2019-05-12 11:02:25 +0100 |
---|---|---|
committer | Thomas Adam <thomas@xteddy.org> | 2019-05-12 11:02:25 +0100 |
commit | 180bbab1fc39176885f8af777b24f455c14fff57 (patch) | |
tree | bb07f09e58bacb1f71875e14b8e7b3260793db94 /window-client.c | |
parent | 69c59c52b6b7b188738e1a7e7ec215c0fa9c0e05 (diff) | |
parent | a13165523598fa7670ebc95f3cfb5c892d08745a (diff) | |
download | rtmux-180bbab1fc39176885f8af777b24f455c14fff57.tar.gz rtmux-180bbab1fc39176885f8af777b24f455c14fff57.tar.bz2 rtmux-180bbab1fc39176885f8af777b24f455c14fff57.zip |
Merge branch 'obsd-master'
Diffstat (limited to 'window-client.c')
-rw-r--r-- | window-client.c | 29 |
1 files changed, 28 insertions, 1 deletions
diff --git a/window-client.c b/window-client.c index e0637a06..e172b584 100644 --- a/window-client.c +++ b/window-client.c @@ -40,6 +40,16 @@ static void window_client_key(struct window_mode_entry *, "session #{session_name} " \ "(#{client_width}x#{client_height}, #{t:client_activity})" +#define WINDOW_CLIENT_MENU \ + "Detach,d,|" \ + "Detach Tagged,D,|" \ + "|" \ + "Tag,t,|" \ + "Tag All,C-t,|" \ + "Tag None,T,|" \ + "|" \ + "Cancel,q," + const struct window_mode window_client_mode = { .name = "client-mode", .default_format = WINDOW_CLIENT_DEFAULT_FORMAT, @@ -68,6 +78,8 @@ struct window_client_itemdata { }; struct window_client_modedata { + struct window_pane *wp; + struct mode_tree_data *data; char *format; char *command; @@ -249,6 +261,19 @@ window_client_draw(__unused void *modedata, void *itemdata, screen_write_fast_copy(ctx, &c->status.screen, 0, 0, sx, lines); } +static void +window_client_menu(void *modedata, struct client *c, key_code key) +{ + struct window_client_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_client_key(wme, c, NULL, NULL, key, NULL); +} + static struct screen * window_client_init(struct window_mode_entry *wme, __unused struct cmd_find_state *fs, struct args *args) @@ -258,6 +283,7 @@ window_client_init(struct window_mode_entry *wme, struct screen *s; wme->data = data = xcalloc(1, sizeof *data); + data->wp = wp; if (args == NULL || !args_has(args, 'F')) data->format = xstrdup(WINDOW_CLIENT_DEFAULT_FORMAT); @@ -269,7 +295,8 @@ window_client_init(struct window_mode_entry *wme, data->command = xstrdup(args->argv[0]); data->data = mode_tree_start(wp, args, window_client_build, - window_client_draw, NULL, data, window_client_sort_list, + window_client_draw, NULL, window_client_menu, data, + WINDOW_CLIENT_MENU, window_client_sort_list, nitems(window_client_sort_list), &s); mode_tree_zoom(data->data, args); |