diff options
author | Arnaud Lacombe <lacombar@gmail.com> | 2010-11-06 17:30:23 -0400 |
---|---|---|
committer | Mauro Carvalho Chehab <mchehab@redhat.com> | 2010-11-22 08:27:17 -0500 |
commit | 86e187ff9bce9fbed7bfed92ae34f491cf1af50f (patch) | |
tree | d857b2671a98e2eb1ddc80477b564e4d279ae464 /scripts/kconfig/menu.c | |
parent | e53beacd23d9cb47590da6a7a7f6d417b941a994 (diff) |
kconfig: add an option to determine a menu's visibility
This option is aimed to add the possibility to control a menu's visibility
without adding dependency to the expression to all the submenu.
Signed-off-by: Arnaud Lacombe <lacombar@gmail.com>
Acked-by: Mauro Carvalho Chehab <mchehab@redhat.com>
Tested-by: Mauro Carvalho Chehab <mchehab@redhat.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
Diffstat (limited to 'scripts/kconfig/menu.c')
-rw-r--r-- | scripts/kconfig/menu.c | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/scripts/kconfig/menu.c b/scripts/kconfig/menu.c index 7e83aef42c6d..b9d9aa18e6d6 100644 --- a/scripts/kconfig/menu.c +++ b/scripts/kconfig/menu.c | |||
@@ -152,6 +152,12 @@ struct property *menu_add_prompt(enum prop_type type, char *prompt, struct expr | |||
152 | return menu_add_prop(type, prompt, NULL, dep); | 152 | return menu_add_prop(type, prompt, NULL, dep); |
153 | } | 153 | } |
154 | 154 | ||
155 | void menu_add_visibility(struct expr *expr) | ||
156 | { | ||
157 | current_entry->visibility = expr_alloc_and(current_entry->visibility, | ||
158 | expr); | ||
159 | } | ||
160 | |||
155 | void menu_add_expr(enum prop_type type, struct expr *expr, struct expr *dep) | 161 | void menu_add_expr(enum prop_type type, struct expr *expr, struct expr *dep) |
156 | { | 162 | { |
157 | menu_add_prop(type, NULL, expr, dep); | 163 | menu_add_prop(type, NULL, expr, dep); |
@@ -410,6 +416,11 @@ bool menu_is_visible(struct menu *menu) | |||
410 | if (!menu->prompt) | 416 | if (!menu->prompt) |
411 | return false; | 417 | return false; |
412 | 418 | ||
419 | if (menu->visibility) { | ||
420 | if (expr_calc_value(menu->visibility) == no) | ||
421 | return no; | ||
422 | } | ||
423 | |||
413 | sym = menu->sym; | 424 | sym = menu->sym; |
414 | if (sym) { | 425 | if (sym) { |
415 | sym_calc_value(sym); | 426 | sym_calc_value(sym); |