aboutsummaryrefslogtreecommitdiff
path: root/mode-tree.c
diff options
context:
space:
mode:
authorThomas Adam <thomas@xteddy.org>2020-06-16 10:01:21 +0100
committerThomas Adam <thomas@xteddy.org>2020-06-16 10:01:21 +0100
commiteb448daa1a07fa25a9928791cdc8411da271a9bc (patch)
treedf8e81d6e1895384dc83f59f536c51ad1af1baf6 /mode-tree.c
parent824efe7be47ff534d57da1ab66c3d0dfde86992d (diff)
parent1bf9555e4f1ad19e1e6f97ede6fb19808ff1c267 (diff)
downloadrtmux-eb448daa1a07fa25a9928791cdc8411da271a9bc.tar.gz
rtmux-eb448daa1a07fa25a9928791cdc8411da271a9bc.tar.bz2
rtmux-eb448daa1a07fa25a9928791cdc8411da271a9bc.zip
Merge branch 'obsd-master'
Diffstat (limited to 'mode-tree.c')
-rw-r--r--mode-tree.c15
1 files changed, 14 insertions, 1 deletions
diff --git a/mode-tree.c b/mode-tree.c
index 993070ec..c4b776f9 100644
--- a/mode-tree.c
+++ b/mode-tree.c
@@ -80,7 +80,9 @@ struct mode_tree_item {
int expanded;
int tagged;
+
int draw_as_parent;
+ int no_tag;
struct mode_tree_list children;
TAILQ_ENTRY(mode_tree_item) entry;
@@ -566,6 +568,12 @@ mode_tree_draw_as_parent(struct mode_tree_item *mti)
}
void
+mode_tree_no_tag(struct mode_tree_item *mti)
+{
+ mti->no_tag = 1;
+}
+
+void
mode_tree_remove(struct mode_tree_data *mtd, struct mode_tree_item *mti)
{
struct mode_tree_item *parent = mti->parent;
@@ -1053,6 +1061,8 @@ mode_tree_key(struct mode_tree_data *mtd, struct client *c, key_code *key,
* Do not allow parents and children to both be tagged: untag
* all parents and children of current.
*/
+ if (current->no_tag)
+ break;
if (!current->tagged) {
parent = current->parent;
while (parent != NULL) {
@@ -1072,7 +1082,10 @@ mode_tree_key(struct mode_tree_data *mtd, struct client *c, key_code *key,
break;
case '\024': /* C-t */
for (i = 0; i < mtd->line_size; i++) {
- if (mtd->line_list[i].item->parent == NULL)
+ if ((mtd->line_list[i].item->parent == NULL &&
+ !mtd->line_list[i].item->no_tag) ||
+ (mtd->line_list[i].item->parent != NULL &&
+ mtd->line_list[i].item->parent->no_tag))
mtd->line_list[i].item->tagged = 1;
else
mtd->line_list[i].item->tagged = 0;