version 1.61, 2021/12/06 10:10:52 |
version 1.62, 2022/02/01 18:12:20 |
|
|
struct mode_tree_data *data; |
struct mode_tree_data *data; |
struct client *c; |
struct client *c; |
u_int line; |
u_int line; |
void *itemdata; |
|
}; |
}; |
|
|
static void mode_tree_free_items(struct mode_tree_list *); |
static void mode_tree_free_items(struct mode_tree_list *); |
|
|
mode_tree_menu_callback(__unused struct menu *menu, __unused u_int idx, |
mode_tree_menu_callback(__unused struct menu *menu, __unused u_int idx, |
key_code key, void *data) |
key_code key, void *data) |
{ |
{ |
struct mode_tree_menu *mtm = data; |
struct mode_tree_menu *mtm = data; |
struct mode_tree_data *mtd = mtm->data; |
struct mode_tree_data *mtd = mtm->data; |
struct mode_tree_item *mti; |
|
|
|
if (mtd->dead || key == KEYC_NONE) |
if (mtd->dead || key == KEYC_NONE) |
goto out; |
goto out; |
|
|
if (mtm->line >= mtd->line_size) |
if (mtm->line >= mtd->line_size) |
goto out; |
goto out; |
mti = mtd->line_list[mtm->line].item; |
|
if (mti->itemdata != mtm->itemdata) |
|
goto out; |
|
mtd->current = mtm->line; |
mtd->current = mtm->line; |
mtd->menucb(mtd->modedata, mtm->c, key); |
mtd->menucb(mtd->modedata, mtm->c, key); |
|
|
|
|
title = xstrdup(""); |
title = xstrdup(""); |
} |
} |
menu = menu_create(title); |
menu = menu_create(title); |
menu_add_items(menu, items, NULL, NULL, NULL); |
menu_add_items(menu, items, NULL, c, NULL); |
free(title); |
free(title); |
|
|
mtm = xmalloc(sizeof *mtm); |
mtm = xmalloc(sizeof *mtm); |
mtm->data = mtd; |
mtm->data = mtd; |
mtm->c = c; |
mtm->c = c; |
mtm->line = line; |
mtm->line = line; |
mtm->itemdata = mti->itemdata; |
|
mtd->references++; |
mtd->references++; |
|
|
if (x >= (menu->width + 4) / 2) |
if (x >= (menu->width + 4) / 2) |