]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
kconfig: gconf: fix single view to display dependent symbols correctly
authorMasahiro Yamada <masahiroy@kernel.org>
Wed, 16 Jul 2025 23:24:08 +0000 (08:24 +0900)
committerMasahiro Yamada <masahiroy@kernel.org>
Sat, 26 Jul 2025 10:55:37 +0000 (19:55 +0900)
In the following example, the symbol C was never displayed in Single
view. Fix the recursion logic so that all symbols are shown.

  menu "menu"

  config A
          bool "A"

  config B
          bool "B"
          depends on A

  config C
          bool "C"
          depends on B

  endmenu

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

index 7725d2c9d92ad8a3f113d21e864b5d45ab9ae905..c67b35807e8ecd3382a46bbe7935e215afc8e25e 100644 (file)
@@ -914,9 +914,7 @@ static gboolean on_treeview1_button_press_event(GtkWidget *widget,
 static void _display_tree(GtkTreeStore *tree, struct menu *menu,
                          GtkTreeIter *parent)
 {
-       struct property *prop;
        struct menu *child;
-       enum prop_type ptype;
        GtkTreeIter iter;
 
        for (child = menu->list; child; child = child->next) {
@@ -929,9 +927,6 @@ static void _display_tree(GtkTreeStore *tree, struct menu *menu,
                if (child->type == M_IF)
                        continue;
 
-               prop = child->prompt;
-               ptype = prop ? prop->type : P_UNKNOWN;
-
                if ((view_mode == SPLIT_VIEW)
                    && !(child->flags & MENU_ROOT) && (tree == tree1))
                        continue;
@@ -943,16 +938,7 @@ static void _display_tree(GtkTreeStore *tree, struct menu *menu,
                gtk_tree_store_append(tree, &iter, parent);
                set_node(tree, &iter, child);
 
-               if ((view_mode == SINGLE_VIEW) && (ptype == P_MENU))
-                       continue;
-/*
-               if (((menu != &rootmenu) && !(menu->flags & MENU_ROOT))
-                   || (view_mode == FULL_VIEW)
-                   || (view_mode == SPLIT_VIEW))*/
-
-               if (((view_mode == SINGLE_VIEW) && (menu->flags & MENU_ROOT))
-                   || (view_mode == FULL_VIEW)
-                   || (view_mode == SPLIT_VIEW))
+               if (view_mode != SINGLE_VIEW || child->type != M_MENU)
                        _display_tree(tree, child, &iter);
        }
 }