From 508e2f0b3aaf2db9b692863738e7ca75765fc70c Mon Sep 17 00:00:00 2001 From: nicm Date: Wed, 28 Feb 2018 08:55:44 +0000 Subject: 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. --- mode-tree.c | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) (limited to 'mode-tree.c') diff --git a/mode-tree.c b/mode-tree.c index cbef4f6a..05ec492d 100644 --- a/mode-tree.c +++ b/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); -- cgit