rendered paste body#include <gtk/gtk.h>#include <glib.h>voidactivate (GtkAction *a, gpointer data){ g_debug ("%s: ACTIVATE!", gtk_action_get_name (a));}voidtoggled (GtkToggleAction *a, gpointer data){ g_debug ("%s: TOGGLED %d!", gtk_action_get_name (a), gtk_toggle_action_get_active (a));}int main(int argc, char **argv){ gtk_init(&argc, &argv); GtkAction *a = gtk_action_new ("test-action", NULL, NULL, NULL); g_signal_connect (a, "activate", activate, NULL); gtk_action_activate (a); // Block works as expected on GtkAction: gtk_action_block_activate (a); gtk_action_activate (a); gtk_action_unblock_activate (a); GtkToggleAction *a2 = gtk_toggle_action_new ("test-toggleaction", NULL, NULL, NULL); gulong activate_id,toggled_id; activate_id = g_signal_connect (a2, "activate", activate, NULL); toggled_id = g_signal_connect (a2, "toggled", toggled, NULL); gtk_action_activate (a2); // TRUE gtk_toggle_action_set_active (a2, FALSE); // Block works as expected when using gtk_action_activate() gtk_action_block_activate (a2); gtk_action_activate (a2); gtk_action_unblock_activate (a2); // Block does NOT work when using gtk_toggle_action_set_active g_signal_handler_block(a2,activate_id); g_signal_handler_block(a2,toggled_id); gtk_toggle_action_set_active (a2, TRUE); g_signal_handler_unblock(a2,activate_id); g_signal_handler_unblock(a2,toggled_id); gtk_main(); return 0;}