kconfig: handle comment entries within choice/endchoice
Peter Korsgaard [Sun, 15 Feb 2009 21:15:16 +0000 (22:15 +0100)]
Implement support for comment entries within choice groups. Comment entries
are displayed visually distinct from normal configs, and selecting them is
a no-op.

Signed-off-by: Peter Korsgaard <jacmet@sunsite.dk>
Cc: Roman Zippel <zippel@linux-m68k.org>
Signed-off-by: Sam Ravnborg <sam@ravnborg.org>

scripts/kconfig/lxdialog/checklist.c
scripts/kconfig/mconf.c

index b2a878c..bcc6f19 100644 (file)
@@ -41,7 +41,8 @@ static void print_item(WINDOW * win, int choice, int selected)
        wmove(win, choice, check_x);
        wattrset(win, selected ? dlg.check_selected.atr
                 : dlg.check.atr);
-       wprintw(win, "(%c)", item_is_tag('X') ? 'X' : ' ');
+       if (!item_is_tag(':'))
+               wprintw(win, "(%c)", item_is_tag('X') ? 'X' : ' ');
 
        wattrset(win, selected ? dlg.tag_selected.atr : dlg.tag.atr);
        mvwaddch(win, choice, item_x, item_str()[0]);
index 6841e95..3bcacb4 100644 (file)
@@ -732,7 +732,12 @@ static void conf_choice(struct menu *menu)
                for (child = menu->list; child; child = child->next) {
                        if (!menu_is_visible(child))
                                continue;
-                       item_make("%s", _(menu_get_prompt(child)));
+                       if (child->sym)
+                               item_make("%s", _(menu_get_prompt(child)));
+                       else {
+                               item_make("*** %s ***", _(menu_get_prompt(child)));
+                               item_set_tag(':');
+                       }
                        item_set_data(child);
                        if (child->sym == active)
                                item_set_selected(1);
@@ -748,6 +753,9 @@ static void conf_choice(struct menu *menu)
                case 0:
                        if (selected) {
                                child = item_data();
+                               if (!child->sym)
+                                       break;
+
                                sym_set_tristate_value(child->sym, yes);
                        }
                        return;