]> git.plutz.net Git - gladerunner/commitdiff
additional widget events
authorPaul Hänsch <paul@plutz.net>
Wed, 15 Jul 2026 12:25:38 +0000 (14:25 +0200)
committerPaul Hänsch <paul@plutz.net>
Wed, 15 Jul 2026 12:25:38 +0000 (14:25 +0200)
glade2.glade
gladerunner.c

index ef40bd361c9570b199d8a649d26b7aa323822051..472731de42395a02039906af0ebe657c5264bd53 100644 (file)
                     <property name="visible">True</property>
                     <property name="can-focus">False</property>
                     <child>
-                      <object class="GtkImageMenuItem">
+                      <object class="GtkImageMenuItem" id="about">
                         <property name="label">gtk-about</property>
                         <property name="visible">True</property>
                         <property name="can-focus">False</property>
index c3277dd04c52c24b756fd83e424f5270bbb4b8dd..e164aa014a057d3d4ab06b5ce3a3e4267521e3e0 100644 (file)
@@ -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);