mirror of
https://github.com/tmux/tmux.git
synced 2025-09-02 05:21:10 +00:00
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:
19
mode-tree.c
19
mode-tree.c
@ -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);
|
||||
|
Reference in New Issue
Block a user