aboutsummaryrefslogtreecommitdiff
path: root/libdbusmenu-gtk/parser.c
diff options
context:
space:
mode:
authorChris Coulson <chrisccoulson@ubuntu.com>2011-03-01 14:45:06 +0000
committerChris Coulson <chrisccoulson@ubuntu.com>2011-03-01 14:45:06 +0000
commitd53aa22ffd52ca5d78de74faf7b52832a2ac0663 (patch)
tree0481d63e690c65c8d7309eecf74575e48ce82a01 /libdbusmenu-gtk/parser.c
parent218b2b32a73881b198f09f74725d395d2d27acdc (diff)
downloadlibdbusmenu-d53aa22ffd52ca5d78de74faf7b52832a2ac0663.tar.gz
libdbusmenu-d53aa22ffd52ca5d78de74faf7b52832a2ac0663.tar.bz2
libdbusmenu-d53aa22ffd52ca5d78de74faf7b52832a2ac0663.zip
Ensure we hook on to child-added signals from sub GtkMenuShell's. This broke in r220
in order to stop adding weak pointers on the root shell more than once. Now, we connect the signals when we create the DbusmenuMenuitem
Diffstat (limited to 'libdbusmenu-gtk/parser.c')
-rw-r--r--libdbusmenu-gtk/parser.c11
1 files changed, 11 insertions, 0 deletions
diff --git a/libdbusmenu-gtk/parser.c b/libdbusmenu-gtk/parser.c
index 97f7979..74da3cd 100644
--- a/libdbusmenu-gtk/parser.c
+++ b/libdbusmenu-gtk/parser.c
@@ -450,6 +450,17 @@ construct_dbusmenu_for_widget (GtkWidget * widget)
}
}
+ GtkWidget *submenu = gtk_menu_item_get_submenu(GTK_MENU_ITEM(widget));
+ if (submenu)
+ {
+ pdata->shell = submenu;
+ g_signal_connect (G_OBJECT (submenu),
+ "child-added",
+ G_CALLBACK (child_added_cb),
+ thisitem);
+ g_object_add_weak_pointer(G_OBJECT(submenu), (gpointer*)&pdata->shell);
+ }
+
if (!g_object_get_data (G_OBJECT (widget), "gtk-empty-menu-item") && !GTK_IS_TEAROFF_MENU_ITEM (widget))
{
visible = gtk_widget_get_visible (widget);