]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
kconfig: gconf: Fix Back button behavior
authorMasahiro Yamada <masahiroy@kernel.org>
Wed, 16 Jul 2025 23:24:09 +0000 (08:24 +0900)
committerMasahiro Yamada <masahiroy@kernel.org>
Sat, 26 Jul 2025 10:55:37 +0000 (19:55 +0900)
Clicking the Back button may navigate to a non-menu hierarchy level.

[Example]

  menu "menu1"

  config A
          bool "A"
          default y

  config B
          bool "B"
          depends on A
          default y

  menu "menu2"
          depends on B

  config C
          bool "C"
          default y

  endmenu

  endmenu

After being re-parented by menu_finalize(), the menu tree is structured
like follows:

  menu "menu1"
  \-- A
      \-- B
          \-- menu "menu2"
              \-- C

In Single view, visit "menu2" and click the Back button. It should go up
to "menu1" and show A, B and "menu2", but instead goes up to A and show
only B and "menu2". This is a bug in on_back_clicked().

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

index c67b35807e8ecd3382a46bbe7935e215afc8e25e..d9ea716644127d21b6de881ff3cfd46e214bd180 100644 (file)
@@ -553,12 +553,8 @@ static void on_license1_activate(GtkMenuItem *menuitem, gpointer user_data)
 /* toolbar handlers */
 static void on_back_clicked(GtkButton *button, gpointer user_data)
 {
-       enum prop_type ptype;
+       browsed = menu_get_parent_menu(browsed) ?: &rootmenu;
 
-       browsed = browsed->parent;
-       ptype = browsed->prompt ? browsed->prompt->type : P_UNKNOWN;
-       if (ptype != P_MENU)
-               browsed = browsed->parent;
        recreate_tree();
 
        if (browsed == &rootmenu)