summaryrefslogtreecommitdiff
path: root/firmware/2lib/2ui.c
diff options
context:
space:
mode:
Diffstat (limited to 'firmware/2lib/2ui.c')
-rw-r--r--firmware/2lib/2ui.c14
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);