From nobody Wed Oct 8 22:37:19 2025 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 460B72FC012; Tue, 24 Jun 2025 15:09:04 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1750777744; cv=none; b=N9YG9ZiMYaH3q2b9VfOWjp3ZK4cM5g8yilUKR6e7/M+oLpAJJYYbTnTFcTh1n1arj6gA/ih7jqh4jZqLGt+1T/3dZ1CNlb3it4gBs41UhG7tI1+QpwepU4mmQsUp8kfyFBKu3xzhTvgacL89Hcli0nbTFjH1/l4OPrT6nvn2pn4= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1750777744; c=relaxed/simple; bh=DjI+et6lMefW9uMpXQWCqe2FLU+qpgBvDy2eHlDXZtw=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=DDQvZsUxTXhMLdc+GxRazDzy5WUd1anjfAfJjLZWUhmrtWoSP8DRhjAkHB2Da7mIdhe7YtcCSBQs+KqDZi26nrryXBdimC/ykCSH3iJAz8Ap76tX9ANXumC/nSOz3LbtmgLH4pQ0d7NseycqdT/iJDZmsBwKMC9wa0MLI5oSzlI= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=iXUa8LQx; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="iXUa8LQx" Received: by smtp.kernel.org (Postfix) with ESMTPSA id DC962C4CEEE; Tue, 24 Jun 2025 15:09:02 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1750777744; bh=DjI+et6lMefW9uMpXQWCqe2FLU+qpgBvDy2eHlDXZtw=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=iXUa8LQxWXUkt3I9HNzDhV/VZ6P1sMvKeMc364XxK7M9gHw5svN74suC/DZUA2FGY TsyuyDcrdmGJ2GiZ72dDlw+/EPrJriBI0I2H2Qcn3FHEM9cUsBzW8nqW8IkTin0YeM 3Y6EygUw3hHn5GLDRIyRx6ke+ooikzKLaP4eQj4rAxpDrQMRgIudBmmQ9yFWTIB/lf 6H06vwILf9gWcHwo75fYH7vsyl5MA7EwbuFkdB+Iw6d6Nmec08hXPgtkifcHjuLsLn eMMvG80Fhc+wNj5JyJm6ocoLcnEW9Lj6sVDpmHxVnGIZGNsUN5NBr3b/3/sLoHeGVN Vqop5+6hP7wpg== From: Masahiro Yamada To: linux-kbuild@vger.kernel.org Cc: Masahiro Yamada , linux-kernel@vger.kernel.org Subject: [PATCH 52/66] kconfig: gconf: remove fixup_rootmenu() Date: Wed, 25 Jun 2025 00:05:40 +0900 Message-ID: <20250624150645.1107002-53-masahiroy@kernel.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250624150645.1107002-1-masahiroy@kernel.org> References: <20250624150645.1107002-1-masahiroy@kernel.org> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" The MENU_ROOT flag is a hack used for SPLIT_VIEW mode. Top-level symbols have no parent menu, so they are displayed directly in the left pane. Show the rootmenu, allowing top-level symbols to have a proper parent menu and be displayed consistently in the right pane. Signed-off-by: Masahiro Yamada --- scripts/kconfig/gconf.c | 164 +++++++++++++++++----------------------- 1 file changed, 71 insertions(+), 93 deletions(-) diff --git a/scripts/kconfig/gconf.c b/scripts/kconfig/gconf.c index 23a6f99d2cd4..b86d54c222e3 100644 --- a/scripts/kconfig/gconf.c +++ b/scripts/kconfig/gconf.c @@ -56,9 +56,6 @@ enum { COL_NUMBER }; =20 -static void display_tree(GtkTreeStore *store, struct menu *menu); -static void recreate_menu_content_tree(void); - static void conf_changed(bool dirty) { gtk_widget_set_sensitive(save_btn, dirty); @@ -254,6 +251,74 @@ static void update_trees(void) update_tree(tree2); } =20 +static void _recreate_menu_tree(GtkTreeStore *store, struct menu *menu, + GtkTreeIter *parent, gboolean menu_only) +{ + GtkTreeIter iter; + + /* REVISIT: menu_finalize() creates empty "if" entries. */ + if (menu->type =3D=3D M_IF) + return; + + if (!menu_only || menu->type =3D=3D M_MENU) { + gtk_tree_store_append(store, &iter, parent); + set_node(store, &iter, menu); + } + + for (struct menu *child =3D menu->list; child; child =3D child->next) + _recreate_menu_tree(store, child, &iter, menu_only); +} + +static void recreate_menu_tree(void) +{ + GtkTreeStore *store; + GtkTreeView *view; + + if (view_mode =3D=3D SPLIT_VIEW) { + store =3D tree1; + view =3D GTK_TREE_VIEW(tree1_w); + } else { + store =3D tree2; + view =3D GTK_TREE_VIEW(tree2_w); + } + + gtk_tree_store_clear(store); + _recreate_menu_tree(store, &rootmenu, NULL, view_mode =3D=3D SPLIT_VIEW); + select_menu(view, browsed); + gtk_tree_view_expand_all(view); +} + +static void _recreate_menu_content_tree(GtkTreeStore *store, struct menu *= menu, + GtkTreeIter *parent, gboolean no_menu) +{ + for (struct menu *child =3D menu->list; child; child =3D child->next) { + GtkTreeIter iter; + + /* REVISIT: menu_finalize() creates empty "if" entries. */ + if (child->type =3D=3D M_IF) + continue; + + if (!no_menu || child->type !=3D M_MENU) { + gtk_tree_store_append(store, &iter, parent); + set_node(store, &iter, child); + } + + if (child->type !=3D M_MENU) + _recreate_menu_content_tree(store, child, &iter, + no_menu); + } +} + +static void recreate_menu_content_tree(void) +{ + gtk_tree_store_clear(tree2); + if (browsed) + _recreate_menu_content_tree(tree2, browsed, NULL, + view_mode =3D=3D SPLIT_VIEW); + select_menu(GTK_TREE_VIEW(tree2_w), selected); + gtk_tree_view_expand_all(GTK_TREE_VIEW(tree2_w)); +} + static void set_view_mode(enum view_mode mode) { view_mode =3D mode; @@ -280,7 +345,6 @@ static void set_view_mode(enum view_mode mode) else browsed =3D &rootmenu; recreate_menu_content_tree(); - select_menu(GTK_TREE_VIEW(tree2_w), selected); gtk_widget_set_sensitive(single_btn, FALSE); break; case SPLIT_VIEW: @@ -291,20 +355,12 @@ static void set_view_mode(enum view_mode mode) else browsed =3D menu_get_parent_menu(selected); } - gtk_tree_store_clear(tree1); - display_tree(tree1, &rootmenu); - gtk_tree_view_expand_all(GTK_TREE_VIEW(tree1_w)); - gtk_tree_store_clear(tree2); - if (browsed) - display_tree(tree2, browsed); - select_menu(GTK_TREE_VIEW(tree1_w), browsed); - select_menu(GTK_TREE_VIEW(tree2_w), selected); + recreate_menu_tree(); + recreate_menu_content_tree(); gtk_widget_set_sensitive(split_btn, FALSE); break; case FULL_VIEW: - gtk_tree_store_clear(tree2); - display_tree(tree2, &rootmenu); - select_menu(GTK_TREE_VIEW(tree2_w), selected); + recreate_menu_tree(); gtk_widget_set_sensitive(full_btn, FALSE); break; } @@ -917,83 +973,6 @@ static gboolean on_treeview1_button_press_event(GtkWid= get *widget, return FALSE; } =20 -/* Display the whole tree (single/split/full view) */ -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 =3D menu->list; child; child =3D child->next) { - /* - * REVISIT: - * menu_finalize() creates empty "if" entries. - * Do not confuse gtk_tree_model_get(), which would otherwise - * return "if" menu entry. - */ - if (child->type =3D=3D M_IF) - continue; - - prop =3D child->prompt; - ptype =3D prop ? prop->type : P_UNKNOWN; - - if ((view_mode =3D=3D SPLIT_VIEW) - && !(child->flags & MENU_ROOT) && (tree =3D=3D tree1)) - continue; - - if ((view_mode =3D=3D SPLIT_VIEW) && (child->flags & MENU_ROOT) - && (tree =3D=3D tree2)) - continue; - - gtk_tree_store_append(tree, &iter, parent); - set_node(tree, &iter, child); - - if ((view_mode !=3D FULL_VIEW) && (ptype =3D=3D P_MENU) - && (tree =3D=3D tree2)) - continue; -/* - if (((menu !=3D &rootmenu) && !(menu->flags & MENU_ROOT)) - || (view_mode =3D=3D FULL_VIEW) - || (view_mode =3D=3D SPLIT_VIEW))*/ - - if (((view_mode =3D=3D SINGLE_VIEW) && (menu->flags & MENU_ROOT)) - || (view_mode =3D=3D FULL_VIEW) - || (view_mode =3D=3D SPLIT_VIEW)) - _display_tree(tree, child, &iter); - } -} - -static void display_tree(GtkTreeStore *store, struct menu *menu) -{ - _display_tree(store, menu, NULL); -} - -/* Display a part of the tree starting at current node (single/split view)= */ -static void recreate_menu_content_tree(void) -{ - gtk_tree_store_clear(tree2); - display_tree(tree2, browsed); - gtk_tree_view_expand_all(GTK_TREE_VIEW(tree2_w)); -} - -static void fixup_rootmenu(struct menu *menu) -{ - struct menu *child; - static int menu_cnt =3D 0; - - menu->flags |=3D MENU_ROOT; - for (child =3D menu->list; child; child =3D child->next) { - if (child->prompt && child->prompt->type =3D=3D P_MENU) { - menu_cnt++; - fixup_rootmenu(child); - menu_cnt--; - } else if (!menu_cnt) - fixup_rootmenu(child); - } -} - /* Main Window Initialization */ static void replace_button_icon(GtkWidget *widget, const char * const xpm[= ]) { @@ -1354,7 +1333,6 @@ int main(int ac, char *av[]) name =3D av[1]; =20 conf_parse(name); - fixup_rootmenu(&rootmenu); =20 /* Load the interface and connect signals */ init_main_window(glade_file); --=20 2.43.0