Applied, thanks.

On Sun, Apr 21, 2013 at 11:48:23AM +0100, Thomas Adam wrote:
> When choose-tree learnt the '-u; option to render the tree fully expanded,
> it didn't then reset the current selection in the expanded tree to be that
> of the current session and window.
> 
> This introduces a new function window_choose_set_current() which sets the
> intended position of the selection when first rendered, and changes
> window_choose_ready() to use it.   It's then further used in choose-tree
> when '-u' is given to set the selection to the correct position in the
> expanded tree.
> ---
>  cmd-choose-tree.c |  5 ++++-
>  tmux.h            |  2 ++
>  window-choose.c   | 14 +++++++++++---
>  3 files changed, 17 insertions(+), 4 deletions(-)
> 
> diff --git a/cmd-choose-tree.c b/cmd-choose-tree.c
> index e2d382b..9afd838 100644
> --- a/cmd-choose-tree.c
> +++ b/cmd-choose-tree.c
> @@ -231,9 +231,12 @@ windows_only:
>       free(final_win_template_last);
>  
>       window_choose_ready(wl->window->active, cur_win, NULL);
> +     window_choose_collapse_all(wl->window->active);
>  
> -     if (args_has(args, 'u'))
> +     if (args_has(args, 'u')) {
>               window_choose_expand_all(wl->window->active);
> +             window_choose_set_current(wl->window->active, cur_win);
> +     }
>  
>       return (CMD_RETURN_NORMAL);
>  }
> diff --git a/tmux.h b/tmux.h
> index f0b9edf..d103311 100644
> --- a/tmux.h
> +++ b/tmux.h
> @@ -2253,6 +2253,8 @@ struct window_choose_data       
> *window_choose_add_item(struct window_pane *,
>                       struct client *, struct winlink *, const char *,
>                       const char *, u_int);
>  void window_choose_expand_all(struct window_pane *);
> +void window_choose_collapse_all(struct window_pane *);
> +void window_choose_set_current(struct window_pane *, u_int);
>  
>  /* names.c */
>  void          queue_window_name(struct window *);
> diff --git a/window-choose.c b/window-choose.c
> index 3c68d10..5ed85f0 100644
> --- a/window-choose.c
> +++ b/window-choose.c
> @@ -44,7 +44,6 @@ void        window_choose_scroll_down(struct window_pane *);
>  
>  void window_choose_collapse(struct window_pane *, struct session *);
>  void window_choose_expand(struct window_pane *, struct session *, u_int);
> -void window_choose_collapse_all(struct window_pane *);
>  
>  enum window_choose_input_type {
>       WINDOW_CHOOSE_NORMAL = -1,
> @@ -102,8 +101,7 @@ window_choose_add(struct window_pane *wp, struct 
> window_choose_data *wcd)
>  }
>  
>  void
> -window_choose_ready(struct window_pane *wp, u_int cur,
> -    void (*callbackfn)(struct window_choose_data *))
> +window_choose_set_current(struct window_pane *wp, u_int cur)
>  {
>       struct window_choose_mode_data  *data = wp->modedata;
>       struct screen                   *s = &data->screen;
> @@ -112,12 +110,22 @@ window_choose_ready(struct window_pane *wp, u_int cur,
>       if (data->selected > screen_size_y(s) - 1)
>               data->top = ARRAY_LENGTH(&data->list) - screen_size_y(s);
>  
> +     window_choose_redraw_screen(wp);
> +}
> +
> +void
> +window_choose_ready(struct window_pane *wp, u_int cur,
> +    void (*callbackfn)(struct window_choose_data *))
> +{
> +     struct window_choose_mode_data  *data = wp->modedata;
> +
>       data->callbackfn = callbackfn;
>       if (data->callbackfn == NULL)
>               data->callbackfn = window_choose_default_callback;
>  
>       ARRAY_CONCAT(&data->old_list, &data->list);
>  
> +     window_choose_set_current(wp, cur);
>       window_choose_collapse_all(wp);
>  }
>  
> -- 
> 1.7.11.4
> 
> 
> ------------------------------------------------------------------------------
> Precog is a next-generation analytics platform capable of advanced
> analytics on semi-structured data. The platform includes APIs for building
> apps and a phenomenal toolset for data science. Developers can use
> our toolset for easy data analysis & visualization. Get a free account!
> http://www2.precog.com/precogplatform/slashdotnewsletter
> _______________________________________________
> tmux-users mailing list
> tmux-users@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/tmux-users

------------------------------------------------------------------------------
Precog is a next-generation analytics platform capable of advanced
analytics on semi-structured data. The platform includes APIs for building
apps and a phenomenal toolset for data science. Developers can use
our toolset for easy data analysis & visualization. Get a free account!
http://www2.precog.com/precogplatform/slashdotnewsletter
_______________________________________________
tmux-users mailing list
tmux-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/tmux-users

Reply via email to