From nobody Wed Oct 8 12:35:21 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 1A80B23504D;
Sun, 29 Jun 2025 18:46:06 +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=1751222766; cv=none;
b=uH32FPV8+7OBBgYNrLIaR1rwwJhJOV3DbjIdkGSnlmmkFpaxM8JwUCcc+yVTUDZtoczar66JcUHJfbjCI2dTk1L/G5127GO7CGhy9bW4EfggqQa4OXDKo5NTGWa7nvu8idADjtfRp705xCCV+V4YGBakqz8jtIAO5fbsUb/jFHE=
ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1751222766; c=relaxed/simple;
bh=I3dcuAHNmTDdneB+tDus2seE/hobOwzqn4rfPGLFWqs=;
h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References:
MIME-Version;
b=AFARmJTb76RsuF+1wmRJpuCq8FV2bKVqh4OLpf9VU2Rdy3Xq4WF5BZziZkPFs4cGtlgmLq8tNsZ5LXAYchaFacSJpERy3u3rn+nHQSkuYwvdhONbUIG3WwUeTTW9vPBL+1AdBtt7eAzmpy8oTSixnI/71JNLwhiCD478u8IV3ww=
ARC-Authentication-Results: i=1; smtp.subspace.kernel.org;
dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org
header.b=kX/WQsKa; 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="kX/WQsKa"
Received: by smtp.kernel.org (Postfix) with ESMTPSA id 0E11AC4CEEB;
Sun, 29 Jun 2025 18:46:04 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org;
s=k20201202; t=1751222765;
bh=I3dcuAHNmTDdneB+tDus2seE/hobOwzqn4rfPGLFWqs=;
h=From:To:Cc:Subject:Date:In-Reply-To:References:From;
b=kX/WQsKaQ9wsqEn8bYxaGLC89hZ8vOXYKSLrTodaGTgxHQUAEab9LCna7EJxzyQo5
5qndSAUFG8kc1VkDfMV8Xlzf4I5giEpzD8qTc5AmpF32ujDGSBRDi8f5XPXHdtHvNS
5F0t83Wae0f9Jcv/XJnhl2x2/uUMPaIiXcia6H5ebtvf6Z0fqZs7hWLIR5xeeamhyX
6Qu8smhGU1p93sAov8wG2LuuVFxechMN05srK9Oq9fnxigAY4aEROKZA6b0D69S2Xx
H+jsrYRy7IlYd7Jy6VATI7h+W982lMrInJqirOM8KoSOU0gimc95Wz1M7qeNAqlkfu
l4F3DOgUZ5S8Q==
From: Masahiro Yamada
To: linux-kbuild@vger.kernel.org
Cc: Masahiro Yamada ,
linux-kernel@vger.kernel.org
Subject: [PATCH v2 5/9] kconfig: gconf: migrate to GTK 3
Date: Mon, 30 Jun 2025 03:43:31 +0900
Message-ID: <20250629184554.407497-6-masahiroy@kernel.org>
X-Mailer: git-send-email 2.43.0
In-Reply-To: <20250629184554.407497-1-masahiroy@kernel.org>
References: <20250629184554.407497-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"
This commit switches from GTK 2.x to GTK 3, applying the following
necessary changes:
- Do not include invidual headers
- GtkObject is gone
- Convert glade to GtkBuilder
[1]: https://docs.gtk.org/gtk3/migrating-2to3.html
Signed-off-by: Masahiro Yamada
Acked-by: Randy Dunlap
Tested-by: Randy Dunlap
---
(no changes since v1)
scripts/kconfig/gconf-cfg.sh | 11 +-
scripts/kconfig/gconf.c | 70 ++++++------
scripts/kconfig/gconf.ui | 200 +++++++++++++++++------------------
3 files changed, 135 insertions(+), 146 deletions(-)
diff --git a/scripts/kconfig/gconf-cfg.sh b/scripts/kconfig/gconf-cfg.sh
index fc954c0538fa..856c692f480c 100755
--- a/scripts/kconfig/gconf-cfg.sh
+++ b/scripts/kconfig/gconf-cfg.sh
@@ -6,7 +6,7 @@ set -eu
cflags=3D$1
libs=3D$2
=20
-PKG=3D"gtk+-2.0 gmodule-2.0 libglade-2.0"
+PKG=3Dgtk+-3.0
=20
if [ -z "$(command -v ${HOSTPKG_CONFIG})" ]; then
echo >&2 "*"
@@ -18,18 +18,11 @@ fi
if ! ${HOSTPKG_CONFIG} --exists $PKG; then
echo >&2 "*"
echo >&2 "* Unable to find the GTK+ installation. Please make sure that"
- echo >&2 "* the GTK+ 2.0 development package is correctly installed."
+ echo >&2 "* the GTK 3 development package is correctly installed."
echo >&2 "* You need $PKG"
echo >&2 "*"
exit 1
fi
=20
-if ! ${HOSTPKG_CONFIG} --atleast-version=3D2.0.0 gtk+-2.0; then
- echo >&2 "*"
- echo >&2 "* GTK+ is present but version >=3D 2.0.0 is required."
- echo >&2 "*"
- exit 1
-fi
-
${HOSTPKG_CONFIG} --cflags ${PKG} > ${cflags}
${HOSTPKG_CONFIG} --libs ${PKG} > ${libs}
diff --git a/scripts/kconfig/gconf.c b/scripts/kconfig/gconf.c
index 6cf58fe5bcfe..a751ab6a98f0 100644
--- a/scripts/kconfig/gconf.c
+++ b/scripts/kconfig/gconf.c
@@ -7,10 +7,7 @@
#include "lkc.h"
#include "images.h"
=20
-#include
#include
-#include
-#include
=20
#include
#include
@@ -599,7 +596,7 @@ static void on_expand_clicked(GtkButton *button, gpoint=
er user_data)
=20
/* Main Windows Callbacks */
=20
-static void on_window1_destroy(GtkObject *object, gpointer user_data)
+static void on_window1_destroy(GtkWidget *widget, gpointer user_data)
{
gtk_main_quit();
}
@@ -999,15 +996,15 @@ static void replace_button_icon(GtkWidget *widget, co=
nst char * const xpm[])
=20
static void init_main_window(const gchar *glade_file)
{
- GladeXML *xml;
+ GtkBuilder *builder;
GtkWidget *widget;
GtkTextBuffer *txtbuf;
=20
- xml =3D glade_xml_new(glade_file, "window1", NULL);
- if (!xml)
+ builder =3D gtk_builder_new_from_file(glade_file);
+ if (!builder)
g_error("GUI loading failed !\n");
=20
- main_wnd =3D glade_xml_get_widget(xml, "window1");
+ main_wnd =3D GTK_WIDGET(gtk_builder_get_object(builder, "window1"));
g_signal_connect(main_wnd, "destroy",
G_CALLBACK(on_window1_destroy), NULL);
g_signal_connect(main_wnd, "configure-event",
@@ -1015,9 +1012,9 @@ static void init_main_window(const gchar *glade_file)
g_signal_connect(main_wnd, "delete_event",
G_CALLBACK(on_window1_delete_event), NULL);
=20
- hpaned =3D glade_xml_get_widget(xml, "hpaned1");
- vpaned =3D glade_xml_get_widget(xml, "vpaned1");
- tree1_w =3D glade_xml_get_widget(xml, "treeview1");
+ hpaned =3D GTK_WIDGET(gtk_builder_get_object(builder, "hpaned1"));
+ vpaned =3D GTK_WIDGET(gtk_builder_get_object(builder, "vpaned1"));
+ tree1_w =3D GTK_WIDGET(gtk_builder_get_object(builder, "treeview1"));
g_signal_connect(tree1_w, "cursor_changed",
G_CALLBACK(on_treeview2_cursor_changed), NULL);
g_signal_connect(tree1_w, "button_press_event",
@@ -1025,7 +1022,7 @@ static void init_main_window(const gchar *glade_file)
g_signal_connect(tree1_w, "key_press_event",
G_CALLBACK(on_treeview2_key_press_event), NULL);
=20
- tree2_w =3D glade_xml_get_widget(xml, "treeview2");
+ tree2_w =3D GTK_WIDGET(gtk_builder_get_object(builder, "treeview2"));
g_signal_connect(tree2_w, "cursor_changed",
G_CALLBACK(on_treeview2_cursor_changed), NULL);
g_signal_connect(tree2_w, "button_press_event",
@@ -1033,101 +1030,101 @@ static void init_main_window(const gchar *glade_f=
ile)
g_signal_connect(tree2_w, "key_press_event",
G_CALLBACK(on_treeview2_key_press_event), NULL);
=20
- text_w =3D glade_xml_get_widget(xml, "textview3");
+ text_w =3D GTK_WIDGET(gtk_builder_get_object(builder, "textview3"));
=20
/* menubar */
- widget =3D glade_xml_get_widget(xml, "load1");
+ widget =3D GTK_WIDGET(gtk_builder_get_object(builder, "load1"));
g_signal_connect(widget, "activate",
G_CALLBACK(on_load1_activate), NULL);
=20
- save_menu_item =3D glade_xml_get_widget(xml, "save1");
+ save_menu_item =3D GTK_WIDGET(gtk_builder_get_object(builder, "save1"));
g_signal_connect(save_menu_item, "activate",
G_CALLBACK(on_save_activate), NULL);
=20
- widget =3D glade_xml_get_widget(xml, "save_as1");
+ widget =3D GTK_WIDGET(gtk_builder_get_object(builder, "save_as1"));
g_signal_connect(widget, "activate",
G_CALLBACK(on_save_as1_activate), NULL);
=20
- widget =3D glade_xml_get_widget(xml, "quit1");
+ widget =3D GTK_WIDGET(gtk_builder_get_object(builder, "quit1"));
g_signal_connect(widget, "activate",
G_CALLBACK(on_quit1_activate), NULL);
=20
- widget =3D glade_xml_get_widget(xml, "show_name1");
+ widget =3D GTK_WIDGET(gtk_builder_get_object(builder, "show_name1"));
g_signal_connect(widget, "activate",
G_CALLBACK(on_show_name1_activate), NULL);
gtk_check_menu_item_set_active((GtkCheckMenuItem *) widget,
show_name);
=20
- widget =3D glade_xml_get_widget(xml, "show_range1");
+ widget =3D GTK_WIDGET(gtk_builder_get_object(builder, "show_range1"));
g_signal_connect(widget, "activate",
G_CALLBACK(on_show_range1_activate), NULL);
gtk_check_menu_item_set_active((GtkCheckMenuItem *) widget,
show_range);
=20
- widget =3D glade_xml_get_widget(xml, "show_data1");
+ widget =3D GTK_WIDGET(gtk_builder_get_object(builder, "show_data1"));
g_signal_connect(widget, "activate",
G_CALLBACK(on_show_data1_activate), NULL);
gtk_check_menu_item_set_active((GtkCheckMenuItem *) widget,
show_value);
=20
- widget =3D glade_xml_get_widget(xml, "set_option_mode1");
+ widget =3D GTK_WIDGET(gtk_builder_get_object(builder, "set_option_mode1")=
);
g_signal_connect(widget, "activate",
G_CALLBACK(on_set_option_mode1_activate), NULL);
=20
- widget =3D glade_xml_get_widget(xml, "set_option_mode2");
+ widget =3D GTK_WIDGET(gtk_builder_get_object(builder, "set_option_mode2")=
);
g_signal_connect(widget, "activate",
G_CALLBACK(on_set_option_mode2_activate), NULL);
=20
- widget =3D glade_xml_get_widget(xml, "set_option_mode3");
+ widget =3D GTK_WIDGET(gtk_builder_get_object(builder, "set_option_mode3")=
);
g_signal_connect(widget, "activate",
G_CALLBACK(on_set_option_mode3_activate), NULL);
=20
- widget =3D glade_xml_get_widget(xml, "introduction1");
+ widget =3D GTK_WIDGET(gtk_builder_get_object(builder, "introduction1"));
g_signal_connect(widget, "activate",
G_CALLBACK(on_introduction1_activate), NULL);
=20
- widget =3D glade_xml_get_widget(xml, "about1");
+ widget =3D GTK_WIDGET(gtk_builder_get_object(builder, "about1"));
g_signal_connect(widget, "activate",
G_CALLBACK(on_about1_activate), NULL);
=20
- widget =3D glade_xml_get_widget(xml, "license1");
+ widget =3D GTK_WIDGET(gtk_builder_get_object(builder, "license1"));
g_signal_connect(widget, "activate",
G_CALLBACK(on_license1_activate), NULL);
=20
/* toolbar */
- back_btn =3D glade_xml_get_widget(xml, "button1");
+ back_btn =3D GTK_WIDGET(gtk_builder_get_object(builder, "button1"));
g_signal_connect(back_btn, "clicked",
G_CALLBACK(on_back_clicked), NULL);
gtk_widget_set_sensitive(back_btn, FALSE);
=20
- widget =3D glade_xml_get_widget(xml, "button2");
+ widget =3D GTK_WIDGET(gtk_builder_get_object(builder, "button2"));
g_signal_connect(widget, "clicked",
G_CALLBACK(on_load_clicked), NULL);
=20
- save_btn =3D glade_xml_get_widget(xml, "button3");
+ save_btn =3D GTK_WIDGET(gtk_builder_get_object(builder, "button3"));
g_signal_connect(save_btn, "clicked",
G_CALLBACK(on_save_clicked), NULL);
=20
- single_btn =3D glade_xml_get_widget(xml, "button4");
+ single_btn =3D GTK_WIDGET(gtk_builder_get_object(builder, "button4"));
g_signal_connect(single_btn, "clicked",
G_CALLBACK(on_single_clicked), NULL);
replace_button_icon(single_btn, xpm_single_view);
=20
- split_btn =3D glade_xml_get_widget(xml, "button5");
+ split_btn =3D GTK_WIDGET(gtk_builder_get_object(builder, "button5"));
g_signal_connect(split_btn, "clicked",
G_CALLBACK(on_split_clicked), NULL);
replace_button_icon(split_btn, xpm_split_view);
=20
- full_btn =3D glade_xml_get_widget(xml, "button6");
+ full_btn =3D GTK_WIDGET(gtk_builder_get_object(builder, "button6"));
g_signal_connect(full_btn, "clicked",
G_CALLBACK(on_full_clicked), NULL);
replace_button_icon(full_btn, xpm_tree_view);
=20
- widget =3D glade_xml_get_widget(xml, "button7");
+ widget =3D GTK_WIDGET(gtk_builder_get_object(builder, "button7"));
g_signal_connect(widget, "clicked",
G_CALLBACK(on_collapse_clicked), NULL);
=20
- widget =3D glade_xml_get_widget(xml, "button8");
+ widget =3D GTK_WIDGET(gtk_builder_get_object(builder, "button8"));
g_signal_connect(widget, "clicked",
G_CALLBACK(on_expand_clicked), NULL);
=20
@@ -1142,7 +1139,9 @@ static void init_main_window(const gchar *glade_file)
=20
gtk_window_set_title(GTK_WINDOW(main_wnd), rootmenu.prompt->text);
=20
- gtk_widget_show(main_wnd);
+ gtk_widget_show_all(main_wnd);
+
+ g_object_unref(builder);
=20
conf_set_changed_callback(conf_changed);
}
@@ -1320,7 +1319,6 @@ int main(int ac, char *av[])
=20
/* GTK stuffs */
gtk_init(&ac, &av);
- glade_init();
=20
/* Determine GUI path */
env =3D getenv(SRCTREE);
diff --git a/scripts/kconfig/gconf.ui b/scripts/kconfig/gconf.ui
index f0c572c7f47c..e5dad2b06502 100644
--- a/scripts/kconfig/gconf.ui
+++ b/scripts/kconfig/gconf.ui
@@ -1,8 +1,8 @@
=20
-
+
=20
-
+
GTK_WINDOW_TOPLEVEL
@@ -19,193 +19,193 @@
GDK_GRAVITY_NORTH_WEST
=20
-
+
=20
-
+
-
+
-
+
=20
-
=20
-
+
=20
-
+
=20
-
+
=20
-
+
=20
-
+
=20
-
+
-
+
=20
-
=20
-
+
-
+
-
+
-
+
0
False
@@ -214,14 +214,14 @@
=20
-
+
False
True
@@ -238,18 +238,18 @@
=20
-
+
True
True
True
False
=20
-
+
True
-
+
-
+
False
False
@@ -257,7 +257,7 @@
=20
-
+
True
Load a config fil=
e
Load
@@ -266,7 +266,7 @@
True
True
False
-
+
False
True
@@ -274,7 +274,7 @@
=20
-
+
True
Save a config fil=
e
Save
@@ -283,7 +283,7 @@
True
True
False
-
+
False
True
@@ -291,18 +291,18 @@
=20
-
+
True
True
True
False
=20
-
+
True
-
+
-
+
False
False
@@ -310,7 +310,7 @@
=20
-
+
True
Single view
Single
@@ -319,7 +319,7 @@
True
True
False
-
+
False
True
@@ -327,7 +327,7 @@
=20
-
+
True
Split view
Split
@@ -336,7 +336,7 @@
True
True
False
-
+
False
True
@@ -344,7 +344,7 @@
=20
-
+
True
Full view
Full
@@ -353,7 +353,7 @@
True
True
False
-
+
False
True
@@ -361,18 +361,18 @@
=20
-
+
True
True
True
False
=20
-
+
True
-
+
-
+
False
False
@@ -380,7 +380,7 @@
=20
-
+
True
Collapse the whol=
e tree in the right frame
Collapse
@@ -389,7 +389,7 @@
True
True
False
-
+
False
True
@@ -397,7 +397,7 @@
=20
-
+
True
Expand the whole =
tree in the right frame
Expand
@@ -406,13 +406,13 @@
True
True
False
-
+
False
True
-
+
0
False
@@ -421,14 +421,13 @@
=20
-
+
1
True
True
- 0
=20
-
+
True
GTK_POLICY_AUTOMATIC
GTK_POLICY_AUTOMATIC
@@ -436,16 +435,16 @@
GTK_CORNER_TOP_LEFT
=20
-
+
True
True
True
False
False
False
-
+
-
+
True
False
@@ -453,13 +452,12 @@
=20
-
+
True
True
- 0
=20
-
+
True
GTK_POLICY_AUTOMATIC
GTK_POLICY_AUTOMATIC
@@ -467,7 +465,7 @@
GTK_CORNER_TOP_LEFT
=20
-
+
True
True
True
@@ -475,9 +473,9 @@
False
False
False
-
+
-
+
True
False
@@ -485,7 +483,7 @@
=20
-
+
True
GTK_POLICY_NEVER
GTK_POLICY_AUTOMATIC
@@ -493,7 +491,7 @@
GTK_CORNER_TOP_LEFT
=20
-
+
True
True
False
@@ -508,29 +506,29 @@
0
0
0
-
+
-
+
True
True
-
+
True
True
-
+
0
True
True
-
+
-
+
=20
-
+
--=20
2.43.0