=================================================================== RCS file: /cvsrepo/anoncvs/cvs/src/usr.bin/tmux/mode-tree.c,v retrieving revision 1.49 retrieving revision 1.50 diff -c -r1.49 -r1.50 *** src/usr.bin/tmux/mode-tree.c 2020/05/16 16:35:13 1.49 --- src/usr.bin/tmux/mode-tree.c 2020/06/16 08:18:34 1.50 *************** *** 1,4 **** ! /* $OpenBSD: mode-tree.c,v 1.49 2020/05/16 16:35:13 nicm Exp $ */ /* * Copyright (c) 2017 Nicholas Marriott --- 1,4 ---- ! /* $OpenBSD: mode-tree.c,v 1.50 2020/06/16 08:18:34 nicm Exp $ */ /* * Copyright (c) 2017 Nicholas Marriott *************** *** 80,86 **** --- 80,88 ---- int expanded; int tagged; + int draw_as_parent; + int no_tag; struct mode_tree_list children; TAILQ_ENTRY(mode_tree_item) entry; *************** *** 566,571 **** --- 568,579 ---- } 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,1058 **** --- 1061,1068 ---- * 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,1078 **** break; case '\024': /* C-t */ for (i = 0; i < mtd->line_size; i++) { ! if (mtd->line_list[i].item->parent == NULL) mtd->line_list[i].item->tagged = 1; else mtd->line_list[i].item->tagged = 0; --- 1082,1091 ---- break; case '\024': /* C-t */ for (i = 0; i < mtd->line_size; i++) { ! 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;