From 96bcf1bbc5aa3178096874f57c10af8c6dec3a85 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Paul=20H=C3=A4nsch?= Date: Wed, 15 Jul 2026 14:25:38 +0200 Subject: [PATCH] additional widget events --- glade2.glade | 2 +- gladerunner.c | 30 ++++++++++++++++++++++++++---- 2 files changed, 27 insertions(+), 5 deletions(-) diff --git a/glade2.glade b/glade2.glade index ef40bd3..472731d 100644 --- a/glade2.glade +++ b/glade2.glade @@ -192,7 +192,7 @@ True False - + gtk-about True False diff --git a/gladerunner.c b/gladerunner.c index c3277dd..e164aa0 100644 --- a/gladerunner.c +++ b/gladerunner.c @@ -25,13 +25,22 @@ void e_si_activate(GtkWidget *wdg, gpointer d) { printf("%s ACTIVATE\n", (char*) d); } -void e_button_clicked(GtkWidget *wdg, gpointer d) { +void e_widget_clicked(GtkWidget *wdg, gpointer d) { printf( "%s CLICKED\n", gtk_buildable_get_name(GTK_BUILDABLE(wdg)) ); } +// menu items get "activated" instead of clicked +// (i.e. when running the mouse over an open menu bar) +void e_mi_activate(GtkWidget *wdg, gpointer d) { + printf( + "%s ACTIVATE\n", + gtk_buildable_get_name(GTK_BUILDABLE(wdg)) + ); +} + // Radio Buttons and Checkboxes are "Toggle Buttons" void e_tb_toggled(GtkWidget *wdg, gpointer d) { GtkToggleButton *t = GTK_TOGGLE_BUTTON(wdg); @@ -42,6 +51,16 @@ void e_tb_toggled(GtkWidget *wdg, gpointer d) { ); } +// Radio Buttons and Checkboxes within tool bars are "Toggle Tool Buttons" +void e_ttb_toggled(GtkWidget *wdg, gpointer d) { + GtkToggleToolButton *t = GTK_TOGGLE_TOOL_BUTTON(wdg); + printf( + "%s TOGGLED %i\n", + gtk_buildable_get_name(GTK_BUILDABLE(wdg)), + gtk_toggle_tool_button_get_active(t) + ); +} + // Radio Buttons and Checkboxes within menus are "Check Menu Items" void e_cmi_toggled(GtkWidget *wdg, gpointer d) { GtkCheckMenuItem *c = GTK_CHECK_MENU_ITEM(wdg); @@ -198,11 +217,14 @@ void init_widgets(gpointer wp, gpointer data) { name = gtk_buildable_get_name(GTK_BUILDABLE(wp)); if (strncmp(name, "___", 3) == 0 ) return; - else if (GTK_IS_TOGGLE_BUTTON(wdg)) g_signal_connect(wdg, "toggled", G_CALLBACK(e_tb_toggled), NULL); - else if (GTK_IS_CHECK_MENU_ITEM(wdg)) g_signal_connect(wdg, "toggled", G_CALLBACK(e_cmi_toggled), NULL); + else if (GTK_IS_TOGGLE_BUTTON(wdg)) g_signal_connect(wdg, "toggled", G_CALLBACK(e_tb_toggled), NULL); + else if (GTK_IS_CHECK_MENU_ITEM(wdg)) g_signal_connect(wdg, "toggled", G_CALLBACK(e_cmi_toggled), NULL); + else if (GTK_IS_TOGGLE_TOOL_BUTTON(wdg)) g_signal_connect(wdg, "toggled", G_CALLBACK(e_ttb_toggled), NULL); else if (GTK_IS_ENTRY(wdg) ) g_signal_connect(wdg, "changed", G_CALLBACK(e_entry_changed), NULL); else if (GTK_IS_WINDOW(wdg)) g_signal_connect(wdg, "destroy", G_CALLBACK(app_quit), NULL); - else if (GTK_IS_BUTTON(wdg)) g_signal_connect(wdg, "clicked", G_CALLBACK(e_button_clicked), NULL); + else if (GTK_IS_TOOL_BUTTON(wdg)) g_signal_connect(wdg, "clicked", G_CALLBACK(e_widget_clicked), NULL); + else if (GTK_IS_MENU_ITEM(wdg)) g_signal_connect(wdg, "activate",G_CALLBACK(e_mi_activate), NULL); + else if (GTK_IS_BUTTON(wdg)) g_signal_connect(wdg, "clicked", G_CALLBACK(e_widget_clicked), NULL); else { printf("%s unknown\n", name); return; } printf("%s loaded\n", name); -- 2.47.3