diff --git a/src/hci/tui/menu_ui.c b/src/hci/tui/menu_ui.c index 49740795..d5636f8b 100644 --- a/src/hci/tui/menu_ui.c +++ b/src/hci/tui/menu_ui.c @@ -247,13 +247,17 @@ static int menu_loop ( struct menu_ui *ui, struct menu_item **selected ) { i = 0; list_for_each_entry ( item, &ui->menu->items, list ) { - if ( item->shortcut && - ( item->shortcut == key ) ) { - ui->selected = i; - chosen = 1; - break; + if ( ! ( item->shortcut && + ( item->shortcut == key ) ) ) { + i++; + continue; + } + ui->selected = i; + if ( item->label ) { + chosen = 1; + } else { + move = +1; } - i++; } break; } @@ -284,12 +288,10 @@ static int menu_loop ( struct menu_ui *ui, struct menu_item **selected ) { draw_menu_item ( ui, ui->selected ); } - /* Refuse to choose unlabelled items (i.e. separators) */ - item = menu_item ( ui->menu, ui->selected ); - if ( ! item->label ) - chosen = 0; - /* Record selection */ + item = menu_item ( ui->menu, ui->selected ); + assert ( item != NULL ); + assert ( item->label != NULL ); *selected = item; } while ( ( rc == 0 ) && ! chosen );