--- lbbs/src/menu.c 2005/03/21 04:43:47 1.11 +++ lbbs/src/menu.c 2005/03/21 13:27:00 1.12 @@ -159,9 +159,9 @@ load_menu (MENU_SET * p_menu_set, const strncpy (p_menu_set->p_menu[i]->items[j]->action, buffer + pmatch[1].rm_so, pmatch[1].rm_eo - pmatch[1].rm_so); - p_menu_set->p_menu[i]->items[j]->action[pmatch[0]. + p_menu_set->p_menu[i]->items[j]->action[pmatch[1]. rm_eo - - pmatch[0]. + pmatch[1]. rm_so] = '\0'; strncpy (temp, buffer + pmatch[2].rm_so, pmatch[2].rm_eo - pmatch[2].rm_so); @@ -333,6 +333,16 @@ display_menu (MENU * p_menu) return 0; } +int +display_current_menu (MENU_SET * p_menu_set) +{ + MENU *p_menu; + + p_menu = p_menu_set->p_menu_select[p_menu_set->menu_select_depth]; + + return display_menu (p_menu); +} + const char * menu_control (MENU_SET * p_menu_set, int key) { @@ -369,8 +379,7 @@ menu_control (MENU_SET * p_menu_set, int if (p_menu_set->menu_select_depth > 0) { p_menu_set->menu_select_depth--; - p_menu = p_menu_set->p_menu_select[p_menu_set->menu_select_depth]; - if (display_menu (p_menu) != 0) + if (display_current_menu (p_menu_set) != 0) return menu_control (p_menu_set, KEY_LEFT); break; } @@ -378,7 +387,9 @@ menu_control (MENU_SET * p_menu_set, int { display_menu_cursor (p_menu, 0); p_menu->item_cur_pos = p_menu->item_count - 1; - while (!p_menu->items[p_menu->item_cur_pos]->display) + while (!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;