Add -Z flag to choose-tree, choose-client, choose-buffer to

automatically zoom the pane when the mode is entered and unzoom when it
exits, assuming the pane is not already zoomed. Add -Z to the default
key bindings.
This commit is contained in:
nicm
2018-02-28 08:55:44 +00:00
parent 4d72b8fff7
commit 508e2f0b3a
9 changed files with 40 additions and 13 deletions

View File

@ -31,6 +31,7 @@ TAILQ_HEAD(mode_tree_list, mode_tree_item);
struct mode_tree_data {
int dead;
u_int references;
int zoomed;
struct window_pane *wp;
void *modedata;
@ -343,6 +344,19 @@ mode_tree_start(struct window_pane *wp, struct args *args,
return (mtd);
}
void
mode_tree_zoom(struct mode_tree_data *mtd, struct args *args)
{
struct window_pane *wp = mtd->wp;
if (args_has(args, 'Z')) {
mtd->zoomed = (wp->window->flags & WINDOW_ZOOMED);
if (!mtd->zoomed && window_zoom(wp) == 0)
server_redraw_window(wp->window);
} else
mtd->zoomed = -1;
}
void
mode_tree_build(struct mode_tree_data *mtd)
{
@ -394,6 +408,11 @@ mode_tree_remove_ref(struct mode_tree_data *mtd)
void
mode_tree_free(struct mode_tree_data *mtd)
{
struct window_pane *wp = mtd->wp;
if (mtd->zoomed == 0)
server_unzoom_window(wp->window);
mode_tree_free_items(&mtd->children);
mode_tree_clear_lines(mtd);
screen_free(&mtd->screen);