summaryrefslogtreecommitdiffstats
path: root/mode-tree.c
diff options
context:
space:
mode:
authornicm <nicm>2017-08-23 09:39:11 +0000
committernicm <nicm>2017-08-23 09:39:11 +0000
commit08b125194ee37b9f2c597b6a39376c47dd74433b (patch)
tree31d1d9d043099d5e5e97c332e293df3f67739342 /mode-tree.c
parent1d60dd5872f65b59934b8c1526a6c4c13de753ea (diff)
Key (v) and flag (-N) to toggle preview in choose modes.
Diffstat (limited to 'mode-tree.c')
-rw-r--r--mode-tree.c24
1 files changed, 17 insertions, 7 deletions
diff --git a/mode-tree.c b/mode-tree.c
index 536da03b..4e11a3b4 100644
--- a/mode-tree.c
+++ b/mode-tree.c
@@ -60,6 +60,7 @@ struct mode_tree_data {
struct screen screen;
+ int preview;
char *search;
char *filter;
};
@@ -295,6 +296,8 @@ mode_tree_start(struct window_pane *wp, struct args *args,
mtd->sort_size = sort_size;
mtd->sort_type = 0;
+ mtd->preview = !args_has(args, 'N');
+
sort = args_get(args, 'O');
if (sort != NULL) {
for (i = 0; i < sort_size; i++) {
@@ -348,12 +351,15 @@ mode_tree_build(struct mode_tree_data *mtd)
mode_tree_set_current(mtd, tag);
mtd->width = screen_size_x(s);
- mtd->height = (screen_size_y(s) / 3) * 2;
- if (mtd->height > mtd->line_size)
- mtd->height = screen_size_y(s) / 2;
- if (mtd->height < 10)
- mtd->height = screen_size_y(s);
- if (screen_size_y(s) - mtd->height < 2)
+ if (mtd->preview) {
+ mtd->height = (screen_size_y(s) / 3) * 2;
+ if (mtd->height > mtd->line_size)
+ mtd->height = screen_size_y(s) / 2;
+ if (mtd->height < 10)
+ mtd->height = screen_size_y(s);
+ if (screen_size_y(s) - mtd->height < 2)
+ mtd->height = screen_size_y(s);
+ } else
mtd->height = screen_size_y(s);
}
@@ -549,7 +555,7 @@ mode_tree_draw(struct mode_tree_data *mtd)
}
sy = screen_size_y(s);
- if (sy <= 4 || h <= 4 || sy - h <= 4 || w <= 4) {
+ if (!mtd->preview || sy <= 4 || h <= 4 || sy - h <= 4 || w <= 4) {
screen_write_stop(&ctx);
return;
}
@@ -861,6 +867,10 @@ mode_tree_key(struct mode_tree_data *mtd, struct client *c, key_code *key,
mode_tree_filter_callback, mode_tree_filter_free, mtd,
PROMPT_NOFORMAT);
break;
+ case 'v':
+ mtd->preview = !mtd->preview;
+ mode_tree_build(mtd);
+ break;
}
return (0);
}