Lines Matching defs:md
172 struct menu_data *md = data;
174 *cx = md->px + 2;
175 if (md->choice == -1)
176 *cy = md->py;
178 *cy = md->py + 1 + md->choice;
180 return (&md->s);
188 struct menu_data *md = data;
189 struct menu *menu = md->menu;
191 server_client_overlay_range(md->px, md->py, menu->width + 4,
199 struct menu_data *md = data;
201 struct screen *s = &md->s;
202 struct menu *menu = md->menu;
204 u_int i, px = md->px, py = md->py;
209 if (md->border_lines != BOX_LINES_NONE) {
211 md->border_lines, &md->border_style, menu->title);
214 screen_write_menu(&ctx, menu, md->choice, md->border_lines,
215 &md->style, &md->border_style, &md->selected_style);
218 for (i = 0; i < screen_size_y(&md->s); i++) {
227 struct menu_data *md = data;
229 if (md->item != NULL)
230 cmdq_continue(md->item);
232 if (md->cb != NULL)
233 md->cb(md->menu, UINT_MAX, KEYC_NONE, md->data);
235 screen_free(&md->s);
236 menu_free(md->menu);
237 free(md);
243 struct menu_data *md = data;
244 struct menu *menu = md->menu;
247 int count = menu->count, old = md->choice;
255 if (md->flags & MENU_NOMOUSE) {
260 if (m->x < md->px ||
261 m->x > md->px + 4 + menu->width ||
262 m->y < md->py + 1 ||
263 m->y > md->py + 1 + count - 1) {
264 if (~md->flags & MENU_STAYOPEN) {
273 if (md->choice != -1) {
274 md->choice = -1;
279 if (~md->flags & MENU_STAYOPEN) {
286 md->choice = m->y - (md->py + 1);
287 if (md->choice != old)
296 md->choice = i;
306 if (md->choice == -1 || md->choice == 0)
307 md->choice = count - 1;
309 md->choice--;
310 name = menu->items[md->choice].name;
311 } while ((name == NULL || *name == '-') && md->choice != old);
315 if (~md->flags & MENU_TAB)
319 if (~md->flags & MENU_TAB)
321 if (md->choice == count - 1)
329 if (md->choice == -1 || md->choice == count - 1)
330 md->choice = 0;
332 md->choice++;
333 name = menu->items[md->choice].name;
334 } while ((name == NULL || *name == '-') && md->choice != old);
339 if (md->choice < 6)
340 md->choice = 0;
344 md->choice--;
345 name = menu->items[md->choice].name;
346 if (md->choice != 0 &&
349 else if (md->choice == 0)
356 if (md->choice > count - 6) {
357 md->choice = count - 1;
358 name = menu->items[md->choice].name;
362 md->choice++;
363 name = menu->items[md->choice].name;
364 if (md->choice != count - 1 &&
367 else if (md->choice == count - 1)
372 md->choice--;
373 name = menu->items[md->choice].name;
379 md->choice = 0;
380 name = menu->items[md->choice].name;
382 md->choice++;
383 name = menu->items[md->choice].name;
389 md->choice = count - 1;
390 name = menu->items[md->choice].name;
392 md->choice--;
393 name = menu->items[md->choice].name;
410 if (md->choice == -1)
412 item = &menu->items[md->choice];
414 if (md->flags & MENU_STAYOPEN)
418 if (md->cb != NULL) {
419 md->cb(md->menu, md->choice, item->key, md->data);
420 md->cb = NULL;
424 if (md->item != NULL)
425 event = cmdq_get_event(md->item);
428 state = cmdq_new_state(&md->fs, event, 0);
465 struct menu_data *md;
480 md = xcalloc(1, sizeof *md);
481 md->item = item;
482 md->flags = flags;
483 md->border_lines = lines;
485 menu_set_style(c, &md->style, style, "menu-style");
486 menu_set_style(c, &md->selected_style, selected_style,
488 menu_set_style(c, &md->border_style, border_style, "menu-border-style");
491 cmd_find_copy_state(&md->fs, fs);
492 screen_init(&md->s, menu->width + 4, menu->count + 2, 0);
493 if (~md->flags & MENU_NOMOUSE)
494 md->s.mode |= (MODE_MOUSE_ALL|MODE_MOUSE_BUTTON);
495 md->s.mode &= ~MODE_CURSOR;
497 md->px = px;
498 md->py = py;
500 md->menu = menu;
501 md->choice = -1;
503 if (md->flags & MENU_NOMOUSE) {
510 md->choice = choice - 1;
523 md->choice = choice;
534 md->cb = cb;
535 md->data = data;
536 return (md);
546 struct menu_data *md;
548 md = menu_prepare(menu, flags, starting_choice, item, px, py, c, lines,
550 if (md == NULL)
553 menu_key_cb, menu_free_cb, NULL, md);