From 41336bb019c846e48b06cca071aba917fc86d0c3 Mon Sep 17 00:00:00 2001 From: Ted Gould Date: Wed, 26 Aug 2009 14:38:30 -0500 Subject: Instead of directly appending items, make it so that they're not connected until they're realized. --- libdbusmenu-gtk/menu.c | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) (limited to 'libdbusmenu-gtk/menu.c') diff --git a/libdbusmenu-gtk/menu.c b/libdbusmenu-gtk/menu.c index bc7458c..6e78a04 100644 --- a/libdbusmenu-gtk/menu.c +++ b/libdbusmenu-gtk/menu.c @@ -213,6 +213,16 @@ root_child_delete (DbusmenuMenuitem * root, DbusmenuMenuitem * child, DbusmenuGt return; } +static void +child_realized (DbusmenuMenuitem * child, gpointer userdata) +{ + DbusmenuGtkMenu * menu = DBUSMENU_GTKMENU(userdata); + DbusmenuGtkMenuPrivate * priv = DBUSMENU_GTKMENU_GET_PRIVATE(menu); + + gtk_menu_append(menu, GTK_WIDGET(dbusmenu_gtkclient_menuitem_get(priv->client, child))); + return; +} + static void root_changed (DbusmenuGtkClient * client, DbusmenuMenuitem * newroot, DbusmenuGtkMenu * menu) { if (newroot == NULL) { @@ -227,7 +237,8 @@ root_changed (DbusmenuGtkClient * client, DbusmenuMenuitem * newroot, DbusmenuGt GList * child = NULL; guint count = 0; for (child = dbusmenu_menuitem_get_children(newroot); child != NULL; child = g_list_next(child)) { - gtk_menu_append(menu, GTK_WIDGET(dbusmenu_gtkclient_menuitem_get(client, child->data))); + /* gtk_menu_append(menu, GTK_WIDGET(dbusmenu_gtkclient_menuitem_get(client, child->data))); */ + g_signal_connect(G_OBJECT(child->data), DBUSMENU_MENUITEM_SIGNAL_REALIZED, G_CALLBACK(child_realized), menu); count++; } -- cgit v1.2.3