static void cmd_ctrl_m(key_info_t key_info, keys_info_t *keys_info) { static menu_info *saved_menu; *mode = NORMAL_MODE; saved_menu = menu; if(execute_menu_cb(curr_view, menu) != 0) { *mode = MENU_MODE; menu_redraw(); return; } if(*mode != MENU_MODE) { reset_popup_menu(saved_menu); } else if(menu != saved_menu) { reset_popup_menu(saved_menu); update_menu(); } if(was_redraw) update_screen(UT_FULL); else update_all_windows(); }
int show_bmarks_menu(FileView *view, const char tags[], int go_on_single_match) { static menu_info m; init_menu_info(&m, strdup("Bookmarks"), strdup("No bookmarks found")); m.execute_handler = &execute_bmarks_cb; m.key_handler = &bmarks_khandler; if(is_null_or_empty(tags)) { bmarks_list(&bmarks_cb, &m); } else { bmarks_find(tags, &bmarks_cb, &m); } if(go_on_single_match && m.len == 1) { goto_selected_file(view, m.items[m.pos], 0); reset_popup_menu(&m); return curr_stats.save_msg; } return display_menu(&m, view); }
static void leave_menu_mode(void) { reset_popup_menu(menu); clean_selected_files(view); redraw_view(view); *mode = NORMAL_MODE; if(was_redraw) update_screen(UT_FULL); else update_all_windows(); }
int display_menu(menu_info *m, FileView *view) { if(m->len < 1) { status_bar_message(m->empty_msg); reset_popup_menu(m); return 1; } else { setup_menu(); draw_menu(m); move_to_menu_pos(m->pos, m); enter_menu_mode(m, view); return 0; } }
/* Leaves menu mode, possibly resetting selection. Does nothing if current mode * isn't menu mode. */ static void leave_menu_mode(int reset_selection) { /* Some menu implementation could have switched mode from one of handlers. */ if(!vle_mode_is(MENU_MODE)) { return; } reset_popup_menu(menu); if(reset_selection) { clean_selected_files(view); redraw_view(view); } vle_mode_set(NORMAL_MODE, VMT_PRIMARY); update_ui_on_leaving(); }
TEARDOWN() { reset_popup_menu(&m); }