Home | History | Annotate | Download | only in dist

Lines Matching refs:menu

41 	struct menu		*menu;
49 menu_add_items(struct menu *menu, const struct menu_item *items,
55 menu_add_item(menu, loop, qitem, c, fs);
59 menu_add_item(struct menu *menu, const struct menu_item *item,
70 if (line && menu->count == 0)
72 if (line && menu->items[menu->count - 1].name == NULL)
75 menu->items = xreallocarray(menu->items, menu->count + 1,
76 sizeof *menu->items);
77 new_item = &menu->items[menu->count++];
88 menu->count--;
138 if (width > menu->width)
139 menu->width = width;
142 struct menu *
145 struct menu *menu;
147 menu = xcalloc(1, sizeof *menu);
148 menu->title = xstrdup(title);
149 menu->width = format_width(title);
151 return (menu);
155 menu_free(struct menu *menu)
159 for (i = 0; i < menu->count; i++) {
160 free(__UNCONST(menu->items[i].name));
161 free(__UNCONST(menu->items[i].command));
163 free(menu->items);
165 free(__UNCONST(menu->title));
166 free(menu);
183 /* Return parts of the input range which are not obstructed by the menu. */
189 struct menu *menu = md->menu;
191 server_client_overlay_range(md->px, md->py, menu->width + 4,
192 menu->count + 2, px, py, nx, r);
202 struct menu *menu = md->menu;
210 screen_write_box(&ctx, menu->width + 4, menu->count + 2,
211 md->border_lines, &md->border_style, menu->title);
214 screen_write_menu(&ctx, menu, md->choice, md->border_lines,
219 tty_draw_line(tty, s, 0, i, menu->width + 4, px, py + i,
233 md->cb(md->menu, UINT_MAX, KEYC_NONE, md->data);
236 menu_free(md->menu);
244 struct menu *menu = md->menu;
247 int count = menu->count, old = md->choice;
261 m->x > md->px + 4 + menu->width ||
292 name = menu->items[i].name;
295 if (event->key == menu->items[i].key) {
311 name = menu->items[md->choice].name;
334 name = menu->items[md->choice].name;
346 name = menu->items[md->choice].name;
359 name = menu->items[md->choice].name;
364 name = menu->items[md->choice].name;
374 name = menu->items[md->choice].name;
381 name = menu->items[md->choice].name;
384 name = menu->items[md->choice].name;
391 name = menu->items[md->choice].name;
394 name = menu->items[md->choice].name;
413 item = &menu->items[md->choice];
420 md->cb(md->menu, md->choice, item->key, md->data);
453 w = md->menu->width + 4;
454 h = md->menu->count + 2;
492 menu_prepare(struct menu *menu, int flags, int starting_choice,
503 if (c->tty.sx < menu->width + 4 || c->tty.sy < menu->count + 2)
505 if (px + menu->width + 4 > c->tty.sx)
506 px = c->tty.sx - menu->width - 4;
507 if (py + menu->count + 2 > c->tty.sy)
508 py = c->tty.sy - menu->count - 2;
511 lines = options_get_number(o, "menu-border-lines");
518 menu_set_style(c, &md->style, style, "menu-style");
520 "menu-selected-style");
521 menu_set_style(c, &md->border_style, border_style, "menu-border-style");
525 screen_init(&md->s, menu->width + 4, menu->count + 2, 0);
533 md->menu = menu;
537 if (starting_choice >= (int)menu->count) {
538 starting_choice = menu->count - 1;
541 name = menu->items[choice - 1].name;
547 choice = menu->count;
554 name = menu->items[choice].name;
559 if (++choice == (int)menu->count)
573 menu_display(struct menu *menu, int flags, int starting_choice,
581 md = menu_prepare(menu, flags, starting_choice, item, px, py, c, lines,