summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/hci/tui/menu_ui.c22
1 files changed, 12 insertions, 10 deletions
diff --git a/src/hci/tui/menu_ui.c b/src/hci/tui/menu_ui.c
index 497407953..d5636f8b0 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;
+ if ( ! ( item->shortcut &&
+ ( item->shortcut == key ) ) ) {
+ i++;
+ continue;
+ }
+ ui->selected = i;
+ if ( item->label ) {
chosen = 1;
- break;
+ } 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 );