aboutsummaryrefslogtreecommitdiff
path: root/libdbusmenu-gtk
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
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')
-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);