kconfig: gconf: show checkbox for choice correctly
authorMasahiro Yamada <masahiroy@kernel.org>
Tue, 7 May 2024 15:14:50 +0000 (00:14 +0900)
committerMasahiro Yamada <masahiroy@kernel.org>
Tue, 14 May 2024 14:36:19 +0000 (23:36 +0900)
Currently, bool choices have a checkbox, but tristate choices do not.
It is opposite.

Bool choices should not have a checkbox, as they are fixed to 'y' since
commit 6a1215888e23 ("kconfig: remove 'optional' property support").
Tristate choices, however, should have a checkbox to allow users to
toggle the value.

Signed-off-by: Masahiro Yamada <masahiroy@kernel.org>
scripts/kconfig/gconf.c

index 10d602faa51e1462ddf52f9c01960be2ed81d41b..cc400ffe66150be39f5b7acdc6826b930cd85fe4 100644 (file)
@@ -1054,8 +1054,6 @@ static gchar **fill_row(struct menu *menu)
                struct symbol *def_sym = sym_get_choice_value(sym);
                struct menu *def_menu = NULL;
 
-               row[COL_BTNVIS] = GINT_TO_POINTER(FALSE);
-
                for (child = menu->list; child; child = child->next) {
                        if (menu_is_visible(child)
                            && child->sym == def_sym)
@@ -1065,6 +1063,11 @@ static gchar **fill_row(struct menu *menu)
                if (def_menu)
                        row[COL_VALUE] =
                            g_strdup(menu_get_prompt(def_menu));
+
+               if (sym_get_type(sym) == S_BOOLEAN) {
+                       row[COL_BTNVIS] = GINT_TO_POINTER(FALSE);
+                       return row;
+               }
        }
        if (sym->flags & SYMBOL_CHOICEVAL)
                row[COL_BTNRAD] = GINT_TO_POINTER(TRUE);
@@ -1072,11 +1075,6 @@ static gchar **fill_row(struct menu *menu)
        stype = sym_get_type(sym);
        switch (stype) {
        case S_BOOLEAN:
-               if (GPOINTER_TO_INT(row[COL_PIXVIS]) == FALSE)
-                       row[COL_BTNVIS] = GINT_TO_POINTER(TRUE);
-               if (sym_is_choice(sym))
-                       break;
-               /* fall through */
        case S_TRISTATE:
                val = sym_get_tristate_value(sym);
                switch (val) {