--- lbbs/src/menu.c 2025/05/10 02:52:17 1.35 +++ lbbs/src/menu.c 2025/05/13 07:28:51 1.38 @@ -17,7 +17,6 @@ #include "bbs.h" #include "bbs_cmd.h" #include "user_priv.h" -#include "reg_ex.h" #include "bbs_cmd.h" #include "menu.h" #include "log.h" @@ -681,7 +680,6 @@ int menu_control(MENU_SET *p_menu_set, i switch (key) { case CR: - igetch(1); // Cleanup remaining '\n' in the buffer case KEY_RIGHT: if (p_menu->items[p_menu->item_cur_pos]->submenu) { @@ -697,13 +695,13 @@ int menu_control(MENU_SET *p_menu_set, i { return menu_control(p_menu_set, KEY_LEFT); } - break; } else { return (exec_cmd(p_menu->items[p_menu->item_cur_pos]->action, p_menu->items[p_menu->item_cur_pos]->name)); } + break; case KEY_LEFT: if (p_menu_set->menu_select_depth > 0) { @@ -712,19 +710,20 @@ int menu_control(MENU_SET *p_menu_set, i { return menu_control(p_menu_set, KEY_LEFT); } - break; } else { display_menu_cursor(p_menu, 0); p_menu->item_cur_pos = p_menu->item_count - 1; - while (p_menu->item_cur_pos >= 0 && !p_menu->items[p_menu->item_cur_pos]->display) + while (p_menu->item_cur_pos >= 0 && (!p_menu->items[p_menu->item_cur_pos]->display || + p_menu->items[p_menu->item_cur_pos]->priv != 0 || + p_menu->items[p_menu->item_cur_pos]->level != 0)) { p_menu->item_cur_pos--; } display_menu_cursor(p_menu, 1); - break; } + break; case KEY_UP: display_menu_cursor(p_menu, 0); do @@ -764,6 +763,7 @@ int menu_control(MENU_SET *p_menu_set, i } } } + break; } return 0;