diff options
author | Thomas Adam <thomas@xteddy.org> | 2020-05-13 01:15:31 +0100 |
---|---|---|
committer | Thomas Adam <thomas@xteddy.org> | 2020-05-13 01:15:31 +0100 |
commit | 9d44df9da95452d985f6e5937dd3c4311bf33548 (patch) | |
tree | f25a55a68c42ad5296fed0c4b87ea6a23c3afd75 /mode-tree.c | |
parent | 212cf53ea92acdc4fb752efd6ecd9fce99dccaec (diff) | |
parent | ba20e46bdc6d4624f54920c0efe753671c5184bb (diff) | |
download | rtmux-9d44df9da95452d985f6e5937dd3c4311bf33548.tar.gz rtmux-9d44df9da95452d985f6e5937dd3c4311bf33548.tar.bz2 rtmux-9d44df9da95452d985f6e5937dd3c4311bf33548.zip |
Merge branch 'master' of github.com:tmux/tmux
Diffstat (limited to 'mode-tree.c')
-rw-r--r-- | mode-tree.c | 26 |
1 files changed, 25 insertions, 1 deletions
diff --git a/mode-tree.c b/mode-tree.c index 9ed2e102..131830d6 100644 --- a/mode-tree.c +++ b/mode-tree.c @@ -80,6 +80,7 @@ struct mode_tree_item { int expanded; int tagged; + int draw_as_parent; struct mode_tree_list children; TAILQ_ENTRY(mode_tree_item) entry; @@ -248,6 +249,12 @@ mode_tree_get_current(struct mode_tree_data *mtd) return (mtd->line_list[mtd->current].item->itemdata); } +const char * +mode_tree_get_current_name(struct mode_tree_data *mtd) +{ + return (mtd->line_list[mtd->current].item->name); +} + void mode_tree_expand_current(struct mode_tree_data *mtd) { @@ -257,6 +264,15 @@ mode_tree_expand_current(struct mode_tree_data *mtd) } } +void +mode_tree_collapse_current(struct mode_tree_data *mtd) +{ + if (mtd->line_list[mtd->current].item->expanded) { + mtd->line_list[mtd->current].item->expanded = 0; + mode_tree_build(mtd); + } +} + static int mode_tree_get_tag(struct mode_tree_data *mtd, uint64_t tag, u_int *found) { @@ -512,7 +528,7 @@ mode_tree_add(struct mode_tree_data *mtd, struct mode_tree_item *parent, struct mode_tree_item *mti, *saved; log_debug("%s: %llu, %s %s", __func__, (unsigned long long)tag, - name, text); + name, (text == NULL ? "" : text)); mti = xcalloc(1, sizeof *mti); mti->parent = parent; @@ -544,6 +560,12 @@ mode_tree_add(struct mode_tree_data *mtd, struct mode_tree_item *parent, } void +mode_tree_draw_as_parent(struct mode_tree_item *mti) +{ + mti->draw_as_parent = 1; +} + +void mode_tree_remove(struct mode_tree_data *mtd, struct mode_tree_item *mti) { struct mode_tree_item *parent = mti->parent; @@ -683,6 +705,8 @@ mode_tree_draw(struct mode_tree_data *mtd) line = &mtd->line_list[mtd->current]; mti = line->item; + if (mti->draw_as_parent) + mti = mti->parent; screen_write_cursormove(&ctx, 0, h, 0); screen_write_box(&ctx, w, sy - h); |