I don't think the first menu item should be highlighted by default
unless MENU_NOMOUSE is set or the mouse is over the item (which may be
hard to work out so maybe better defaulting to -1 if ~MENU_NOMOUSE).



On Fri, May 10, 2019 at 11:05:41PM +0100, Thomas Adam wrote:
> 1.  Expose server_client_clear_overlay() to enable menus to be
> manpulated outside of the client which has the menu open.  If the client
> receives a command from a different client to display a new menu, tear
> the current one down and use the new one.
> 
> 2.  Start the menu selection at 0 so the first item is highlighted by
> default.
> 
> I'm not precious about either change...
> ---
>  cmd-display-menu.c | 2 +-
>  menu.c             | 2 +-
>  server-client.c    | 3 +--
>  tmux.h             | 1 +
>  4 files changed, 4 insertions(+), 4 deletions(-)
> 
> diff --git a/cmd-display-menu.c b/cmd-display-menu.c
> index 27bf454d..582a59c4 100644
> --- a/cmd-display-menu.c
> +++ b/cmd-display-menu.c
> @@ -63,7 +63,7 @@ cmd_display_menu_exec(struct cmd *self, struct cmdq_item 
> *item)
>       if ((c = cmd_find_client(item, args_get(args, 'c'), 0)) == NULL)
>               return (CMD_RETURN_ERROR);
>       if (c->overlay_draw != NULL)
> -             return (CMD_RETURN_NORMAL);
> +             server_client_clear_overlay(c);
>       at = status_at_line(c);
>  
>       string = args_get(args, 'M');
> diff --git a/menu.c b/menu.c
> index 0443d22f..9c0a93d6 100644
> --- a/menu.c
> +++ b/menu.c
> @@ -331,7 +331,7 @@ menu_display(struct menu *menu, int flags, struct 
> cmdq_item *item, u_int px,
>       md->py = py;
>  
>       md->menu = menu;
> -     md->choice = -1;
> +     md->choice = 0;
>  
>       md->cb = cb;
>       md->data = data;
> diff --git a/server-client.c b/server-client.c
> index fdc40d8d..f131bfd0 100644
> --- a/server-client.c
> +++ b/server-client.c
> @@ -41,7 +41,6 @@ static void server_client_check_redraw(struct client *);
>  static void  server_client_set_title(struct client *);
>  static void  server_client_reset_state(struct client *);
>  static int   server_client_assume_paste(struct session *);
> -static void  server_client_clear_overlay(struct client *);
>  
>  static void  server_client_dispatch(struct imsg *, void *);
>  static void  server_client_dispatch_command(struct client *, struct imsg *);
> @@ -99,7 +98,7 @@ server_client_set_overlay(struct client *c, u_int delay, 
> overlay_draw_cb drawcb,
>  }
>  
>  /* Clear overlay mode on client. */
> -static void
> +void
>  server_client_clear_overlay(struct client *c)
>  {
>       if (c->overlay_draw == NULL)
> diff --git a/tmux.h b/tmux.h
> index 794dd3d7..67e93631 100644
> --- a/tmux.h
> +++ b/tmux.h
> @@ -2049,6 +2049,7 @@ void     server_add_accept(int);
>  u_int         server_client_how_many(void);
>  void  server_client_set_overlay(struct client *, u_int, overlay_draw_cb,
>      overlay_key_cb, overlay_free_cb, void *);
> +void  server_client_clear_overlay(struct client *);
>  void  server_client_set_key_table(struct client *, const char *);
>  const char *server_client_get_key_table(struct client *);
>  int   server_client_check_nested(struct client *);
> -- 
> 2.20.1
> 
> -- 
> You received this message because you are subscribed to the Google Groups 
> "tmux-users" group.
> To unsubscribe from this group and stop receiving emails from it, send an 
> email to [email protected].
> To post to this group, send an email to [email protected].
> To view this discussion on the web, visit 
> https://groups.google.com/d/msgid/tmux-users/20190510220541.7689-1-thomas%40xteddy.org.
> For more options, visit https://groups.google.com/d/optout.

-- 
You received this message because you are subscribed to the Google Groups 
"tmux-users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send an email to [email protected].
To view this discussion on the web, visit 
https://groups.google.com/d/msgid/tmux-users/20190514191611.4wa4ikoszw6dhnn2%40yelena.
For more options, visit https://groups.google.com/d/optout.

Reply via email to