#include static void property_notify(GObject *mbar, GParamSpec *spec) { GValue val = { 0 }; g_debug("Got property notify for %s", spec->name); g_object_get_property(mbar, spec->name, g_value_init(&val, spec->value_type)); if (spec->value_type == G_TYPE_BOOLEAN) g_debug("Value: %d", g_value_get_boolean(&val)); g_value_unset(&val); } static gboolean _hide(gpointer user_data) { gtk_widget_hide(user_data); return FALSE; } int main(int argc, char **argv) { GtkWidget *window; GtkWidget *mbar; GtkWidget *label; GtkWidget *vbox; GtkWidget *mitem; gtk_init(&argc, &argv); window = gtk_window_new(GTK_WINDOW_TOPLEVEL); mbar = gtk_menu_bar_new(); label = gtk_label_new("LP#705112"); vbox = gtk_vbox_new(FALSE, 0); mitem = gtk_menu_item_new_with_label("Foo"); gtk_container_add(GTK_CONTAINER(vbox), mbar); gtk_container_add(GTK_CONTAINER(vbox), label); gtk_container_add(GTK_CONTAINER(window), vbox); gtk_menu_shell_append(GTK_MENU_SHELL(mbar), mitem); g_signal_connect(mbar, "notify", G_CALLBACK(property_notify), NULL); g_signal_connect(window, "delete-event", G_CALLBACK(gtk_main_quit), NULL); gtk_widget_show(window); gtk_widget_show(vbox); gtk_widget_show(label); gtk_widget_show(mitem); gtk_widget_show(mbar); g_idle_add_full(G_PRIORITY_DEFAULT_IDLE, _hide, mbar, NULL); gtk_main(); return 0; }