diff options
author | Ted Gould <ted@canonical.com> | 2009-08-26 14:38:30 -0500 |
---|---|---|
committer | Ted Gould <ted@canonical.com> | 2009-08-26 14:38:30 -0500 |
commit | 41336bb019c846e48b06cca071aba917fc86d0c3 (patch) | |
tree | 0835cc1729607e1e65e9f3bde72bfbcfd97d041c /libdbusmenu-gtk | |
parent | fc7cc87f18d5fc301c06489517f48c720ffd5006 (diff) | |
download | libdbusmenu-41336bb019c846e48b06cca071aba917fc86d0c3.tar.gz libdbusmenu-41336bb019c846e48b06cca071aba917fc86d0c3.tar.bz2 libdbusmenu-41336bb019c846e48b06cca071aba917fc86d0c3.zip |
Instead of directly appending items, make it so that they're not connected until they're realized.
Diffstat (limited to 'libdbusmenu-gtk')
-rw-r--r-- | libdbusmenu-gtk/menu.c | 13 |
1 files changed, 12 insertions, 1 deletions
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 @@ -214,6 +214,16 @@ root_child_delete (DbusmenuMenuitem * root, DbusmenuMenuitem * child, DbusmenuGt } 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) { gtk_widget_hide(GTK_WIDGET(menu)); @@ -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++; } |