- //globalOutputStream() << "set active: " << active << "\n";
- guint handler_id = gpointer_to_int(g_object_get_data(G_OBJECT(button), "handler"));
- //guint signal_id = g_signal_lookup("toggled", G_OBJECT_TYPE (button));
- //globalOutputStream() << "signal_id: " << signal_id << "\n";
- //guint found = g_signal_handler_find(G_OBJECT(button), G_SIGNAL_MATCH_ID, signal_id, 0, 0, 0, 0);
- //globalOutputStream() << " handler found: " << found << "\n";
- g_signal_handler_block(G_OBJECT(button), handler_id);
- gtk_toggle_button_set_active(button, active);
- g_signal_handler_unblock(G_OBJECT(button), handler_id);
+#if 1
+ guint handler = g_signal_connect_swapped(G_OBJECT(button), "toggled", G_CALLBACK(callback.getThunk()),
+ callback.getEnvironment());
+#else
+ guint handler = g_signal_connect_closure( G_OBJECT( button ), "toggled", create_cclosure( G_CALLBACK( clicked_closure_callback ), callback ), TRUE );
+#endif
+ g_object_set_data(G_OBJECT(button), "handler", gint_to_pointer(handler));
+ return handler;