diff options
| author | Andrew Morton <akpm@osdl.org> | 2004-02-03 18:48:12 -0800 |
|---|---|---|
| committer | Linus Torvalds <torvalds@home.osdl.org> | 2004-02-03 18:48:12 -0800 |
| commit | ccd3fed5b2bddf20be5fcd2d4bffd79df08db411 (patch) | |
| tree | 675daa2b40ba8f18cac27f259da2f0154d9a9b99 /scripts | |
| parent | eb32911f1d4f9e27e10fa23c0dd500e11d9e6802 (diff) | |
[PATCH] fix menuconfig choice item help display
From: Bjorn Helgaas <bjorn.helgaas@hp.com>
Anders Gustafsson <andersg@0x63.nu>
Roman Zippel <zippel@linux-m68k.org>
This patch fixes menuconfig so it can display help text for individual
choice group config entries.
Previously it would only display the help text attached to the "choice"
item. There was no way to display the help attached to individual config
entries inside the choice group. Typically, the "choice" item has no help
text, and all the useful help is attached to the individual entries, so
this was a bit of a problem.
Diffstat (limited to 'scripts')
| -rw-r--r-- | scripts/kconfig/mconf.c | 19 | ||||
| -rw-r--r-- | scripts/lxdialog/checklist.c | 10 |
2 files changed, 21 insertions, 8 deletions
diff --git a/scripts/kconfig/mconf.c b/scripts/kconfig/mconf.c index 1a8e7c414445..b3c24cb98bfe 100644 --- a/scripts/kconfig/mconf.c +++ b/scripts/kconfig/mconf.c @@ -607,6 +607,7 @@ static void conf_choice(struct menu *menu) struct symbol *active; int stat; + active = sym_get_choice_value(menu->sym); while (1) { cprint_init(); cprint("--title"); @@ -618,24 +619,32 @@ static void conf_choice(struct menu *menu) cprint("6"); current_menu = menu; - active = sym_get_choice_value(menu->sym); for (child = menu->list; child; child = child->next) { if (!menu_is_visible(child)) continue; cprint("%p", child); cprint("%s", menu_get_prompt(child)); - cprint(child->sym == active ? "ON" : "OFF"); + if (child->sym == sym_get_choice_value(menu->sym)) + cprint("ON"); + else if (child->sym == active) + cprint("SELECTED"); + else + cprint("OFF"); } stat = exec_conf(); switch (stat) { case 0: - if (sscanf(input_buf, "%p", &menu) != 1) + if (sscanf(input_buf, "%p", &child) != 1) break; - sym_set_tristate_value(menu->sym, yes); + sym_set_tristate_value(child->sym, yes); return; case 1: - show_help(menu); + if (sscanf(input_buf, "%p", &child) == 1) { + show_help(child); + active = child->sym; + } else + show_help(menu); break; case 255: return; diff --git a/scripts/lxdialog/checklist.c b/scripts/lxdialog/checklist.c index 4f78688ed28a..99705fe65bf1 100644 --- a/scripts/lxdialog/checklist.c +++ b/scripts/lxdialog/checklist.c @@ -138,9 +138,11 @@ dialog_checklist (const char *title, const char *prompt, int height, int width, /* Initializes status */ for (i = 0; i < item_no; i++) { status[i] = !strcasecmp (items[i * 3 + 2], "on"); - if (!choice && status[i]) - choice = i; + if ((!choice && status[i]) || !strcasecmp (items[i * 3 + 2], "selected")) + choice = i + 1; } + if (choice) + choice--; max_choice = MIN (list_height, item_no); @@ -302,6 +304,7 @@ dialog_checklist (const char *title, const char *prompt, int height, int width, case 'H': case 'h': case '?': + fprintf (stderr, "%s", items[(scroll + choice) * 3]); delwin (dialog); free (status); return 1; @@ -347,7 +350,8 @@ dialog_checklist (const char *title, const char *prompt, int height, int width, } } - } + } else + fprintf (stderr, "%s", items[(scroll + choice) * 3]); delwin (dialog); free (status); return button; |
