Define the structure for lists of items (window_choose_mode_item) and ensure that window_choose_add can store them. --- trunk/tmux.h | 20 ++++++++++++++++++-- trunk/window-choose.c | 23 ++++++++++------------- 2 files changed, 28 insertions(+), 15 deletions(-)
diff --git a/trunk/tmux.h b/trunk/tmux.h index d0dc122..26c0ceb 100644 --- a/trunk/tmux.h +++ b/trunk/tmux.h @@ -840,6 +840,22 @@ struct window_mode { void (*timer)(struct window_pane *); }; +/* Structures for choose mode. */ +struct window_choose_data { + struct client *client; + struct session *session; + struct format_tree *ft; + char *ft_template; + char *raw_format; + char *action; + u_int idx; +}; + +struct window_choose_mode_item { + struct window_choose_data *wcd; + char *name; +}; + /* Child window structure. */ struct window_pane { u_int id; @@ -2114,8 +2130,8 @@ void window_copy_pageup(struct window_pane *); extern const struct window_mode window_choose_mode; void window_choose_vadd( struct window_pane *, int, const char *, va_list); -void printflike3 window_choose_add( - struct window_pane *, int, const char *, ...); +void window_choose_add(struct window_pane *, + struct window_choose_data *); void window_choose_ready(struct window_pane *, u_int, void (*)(void *, int), void (*)(void *), void *); diff --git a/trunk/window-choose.c b/trunk/window-choose.c index 073c8c4..a8b8230 100644 --- a/trunk/window-choose.c +++ b/trunk/window-choose.c @@ -53,13 +53,12 @@ struct window_choose_mode_data { struct mode_key_data mdata; - ARRAY_DECL(, struct window_choose_mode_item) list; + ARRAY_DECL(, struct window_choose_item) list; u_int top; u_int selected; void (*callbackfn)(void *, int); void (*freefn)(void *); - void *data; }; int window_choose_key_index(struct window_choose_mode_data *, u_int); @@ -68,23 +67,21 @@ int window_choose_index_key(struct window_choose_mode_data *, int); void window_choose_vadd(struct window_pane *wp, int idx, const char *fmt, va_list ap) { - struct window_choose_mode_data *data = wp->modedata; - struct window_choose_mode_item *item; - - ARRAY_EXPAND(&data->list, 1); - item = &ARRAY_LAST(&data->list); xvasprintf(&item->name, fmt, ap); item->idx = idx; } -void printflike3 -window_choose_add(struct window_pane *wp, int idx, const char *fmt, ...) +void +window_choose_add(struct window_pane *wp, struct window_choose_data *wcd) { - va_list ap; + struct window_choose_mode_data *data = wp->modedata; + struct window_choose_mode_item *item; + + ARRAY_EXPAND(&data->list, 1); + item = &ARRAY_LAST(&data->list); - va_start(ap, fmt); - window_choose_vadd(wp, idx, fmt, ap); - va_end(ap); + item->name = format_expand(data->ft, data->ft_template); + item->wcd = wcd; } void -- 1.7.10 ------------------------------------------------------------------------------ Live Security Virtual Conference Exclusive live event will cover all the ways today's security and threat landscape has changed and how IT managers can respond. Discussions will include endpoint security, mobile security and the latest in malware threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/ _______________________________________________ tmux-users mailing list tmux-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/tmux-users