Lines Matching defs:mti
135 struct mode_tree_item *mti, *child;
137 TAILQ_FOREACH(mti, mtl, entry) {
138 if (mti->tag == tag)
139 return (mti);
140 child = mode_tree_find_item(&mti->children, tag);
148 mode_tree_free_item(struct mode_tree_item *mti)
150 mode_tree_free_items(&mti->children);
152 free((void *)mti->name);
153 free((void *)mti->text);
154 free((void *)mti->keystr);
156 free(mti);
162 struct mode_tree_item *mti, *mti1;
164 TAILQ_FOREACH_SAFE(mti, mtl, entry, mti1) {
165 TAILQ_REMOVE(mtl, mti, entry);
166 mode_tree_free_item(mti);
193 struct mode_tree_item *mti;
199 TAILQ_FOREACH(mti, mtl, entry) {
204 line->item = mti;
206 line->last = (mti == TAILQ_LAST(mtl, mode_tree_list));
208 mti->line = (mtd->line_size - 1);
209 if (!TAILQ_EMPTY(&mti->children))
211 if (mti->expanded)
212 mode_tree_build_lines(mtd, &mti->children, depth + 1);
215 mti->key = mtd->keycb(mtd->modedata, mti->itemdata,
216 mti->line);
217 if (mti->key == KEYC_UNKNOWN)
218 mti->key = KEYC_NONE;
219 } else if (mti->line < 10)
220 mti->key = '0' + mti->line;
221 else if (mti->line < 36)
222 mti->key = KEYC_META|('a' + mti->line - 10);
224 mti->key = KEYC_NONE;
225 if (mti->key != KEYC_NONE) {
226 mti->keystr = xstrdup(key_string_lookup_key(mti->key,
228 mti->keylen = strlen(mti->keystr);
230 mti->keystr = NULL;
231 mti->keylen = 0;
234 TAILQ_FOREACH(mti, mtl, entry) {
237 if (line->item == mti)
246 struct mode_tree_item *mti;
248 TAILQ_FOREACH(mti, mtl, entry) {
249 mti->tagged = 0;
250 mode_tree_clear_tagged(&mti->children);
372 struct mode_tree_item *mti;
377 mti = mtd->line_list[i].item;
378 if (mti->tagged)
388 struct mode_tree_item *mti;
394 mti = mtd->line_list[i].item;
395 if (mti->tagged) {
397 cb(mtd->modedata, mti->itemdata, c, key);
401 mti = mtd->line_list[mtd->current].item;
402 cb(mtd->modedata, mti->itemdata, c, key);
589 struct mode_tree_item *mti, *saved;
594 mti = xcalloc(1, sizeof *mti);
595 mti->parent = parent;
596 mti->itemdata = itemdata;
598 mti->tag = tag;
599 mti->name = xstrdup(name);
601 mti->text = xstrdup(text);
606 mti->tagged = saved->tagged;
607 mti->expanded = saved->expanded;
609 mti->expanded = 1;
611 mti->expanded = expanded;
613 TAILQ_INIT(&mti->children);
616 TAILQ_INSERT_TAIL(&parent->children, mti, entry);
618 TAILQ_INSERT_TAIL(&mtd->children, mti, entry);
620 return (mti);
624 mode_tree_draw_as_parent(struct mode_tree_item *mti)
626 mti->draw_as_parent = 1;
630 mode_tree_no_tag(struct mode_tree_item *mti)
632 mti->no_tag = 1;
636 mode_tree_remove(struct mode_tree_data *mtd, struct mode_tree_item *mti)
638 struct mode_tree_item *parent = mti->parent;
641 TAILQ_REMOVE(&parent->children, mti, entry);
643 TAILQ_REMOVE(&mtd->children, mti, entry);
644 mode_tree_free_item(mti);
653 struct mode_tree_item *mti;
678 mti = mtd->line_list[i].item;
679 if (mti->key == KEYC_NONE)
681 if ((int)mti->keylen + 3 > keylen)
682 keylen = mti->keylen + 3;
691 mti = line->item;
695 pad = keylen - 2 - mti->keylen;
696 if (mti->key != KEYC_NONE)
697 xasprintf(&key, "(%s)%*s", mti->keystr, pad, "");
703 else if (TAILQ_EMPTY(&mti->children))
705 else if (mti->expanded)
717 if (mti->parent != NULL &&
718 mtd->line_list[mti->parent->line].last)
730 if (mti->tagged)
734 xasprintf(&text, "%-*s%s%s%s%s", keylen, key, start, mti->name,
735 tag, (mti->text != NULL) ? ": " : "" );
741 if (mti->tagged) {
749 if (mti->text != NULL) {
750 format_draw(&ctx, &gc0, w - width, mti->text,
756 if (mti->text != NULL) {
757 format_draw(&ctx, &gc, w - width, mti->text,
764 if (mti->tagged) {
778 mti = line->item;
779 if (mti->draw_as_parent)
780 mti = mti->parent;
786 xasprintf(&text, " %s (sort: %s%s)", mti->name,
790 xasprintf(&text, " %s", mti->name);
816 mtd->drawcb(mtd->modedata, mti->itemdata, &ctx, box_x, box_y);
827 struct mode_tree_item *mti, *last, *prev;
832 mti = last = mtd->line_list[mtd->current].item;
834 if ((prev = TAILQ_PREV(mti, mode_tree_list, entry)) != NULL) {
838 mti = prev;
841 mti = mti->parent;
844 if (mti == NULL) {
849 mti = prev;
851 if (mti == last)
855 if (strstr(mti->name, mtd->search) != NULL)
856 return (mti);
859 if (mtd->searchcb(mtd->modedata, mti->itemdata, mtd->search))
860 return (mti);
869 struct mode_tree_item *mti, *last, *next;
874 mti = last = mtd->line_list[mtd->current].item;
876 if (!TAILQ_EMPTY(&mti->children))
877 mti = TAILQ_FIRST(&mti->children);
878 else if ((next = TAILQ_NEXT(mti, entry)) != NULL)
879 mti = next;
882 mti = mti->parent;
883 if (mti == NULL)
885 if ((next = TAILQ_NEXT(mti, entry)) != NULL) {
886 mti = next;
891 if (mti == NULL)
892 mti = TAILQ_FIRST(&mtd->children);
893 if (mti == last)
897 if (strstr(mti->name, mtd->search) != NULL)
898 return (mti);
901 if (mtd->searchcb(mtd->modedata, mti->itemdata, mtd->search))
902 return (mti);
910 struct mode_tree_item *mti, *loop;
914 mti = mode_tree_search_forward(mtd);
916 mti = mode_tree_search_backward(mtd);
917 if (mti == NULL)
919 tag = mti->tag;
921 loop = mti->parent;
1012 struct mode_tree_item *mti;
1023 mti = mtd->line_list[line].item;
1027 xasprintf(&title, "#[align=centre]%s", mti->name);
1059 struct mode_tree_item *current, *parent, *mti;
1234 TAILQ_FOREACH(mti, &mtd->children, entry)
1235 mti->expanded = 0;
1239 TAILQ_FOREACH(mti, &mtd->children, entry)
1240 mti->expanded = 1;