diff options
Diffstat (limited to 'firmware/2lib/2ui.c')
-rw-r--r-- | firmware/2lib/2ui.c | 14 |
1 files changed, 11 insertions, 3 deletions
diff --git a/firmware/2lib/2ui.c b/firmware/2lib/2ui.c index 44edc4a8..5b1e3394 100644 --- a/firmware/2lib/2ui.c +++ b/firmware/2lib/2ui.c @@ -144,8 +144,7 @@ vb2_error_t vb2_ui_menu_prev(struct vb2_ui_context *ui) return VB2_REQUEST_UI_CONTINUE; item = ui->state->selected_item - 1; - while (item >= 0 && - ((1 << item) & ui->state->disabled_item_mask)) + while (item >= 0 && VB2_GET_BIT(ui->state->hidden_item_mask, item)) item--; /* Only update if item is valid */ if (item >= 0) @@ -165,7 +164,7 @@ vb2_error_t vb2_ui_menu_next(struct vb2_ui_context *ui) menu = get_menu(ui); item = ui->state->selected_item + 1; while (item < menu->num_items && - ((1 << item) & ui->state->disabled_item_mask)) + VB2_GET_BIT(ui->state->hidden_item_mask, item)) item++; /* Only update if item is valid */ if (item < menu->num_items) @@ -188,6 +187,14 @@ vb2_error_t vb2_ui_menu_select(struct vb2_ui_context *ui) menu_item = &menu->items[ui->state->selected_item]; + /* Cannot select a disabled menu item */ + if (VB2_GET_BIT(ui->state->disabled_item_mask, + ui->state->selected_item)) { + VB2_DEBUG("Menu item <%s> disabled; ignoring\n", + menu_item->text); + return VB2_REQUEST_UI_CONTINUE; + } + if (menu_item->action) { VB2_DEBUG("Menu item <%s> run action\n", menu_item->text); return menu_item->action(ui); @@ -331,6 +338,7 @@ vb2_error_t ui_loop(struct vb2_context *ctx, enum vb2_screen root_screen_id, vb2ex_display_ui(ui.state->screen->id, ui.locale_id, ui.state->selected_item, ui.state->disabled_item_mask, + ui.state->hidden_item_mask, ui.disable_timer, ui.state->current_page, ui.error_code); |