diff options
author | Chris Coulson <chrisccoulson@ubuntu.com> | 2011-03-01 14:45:06 +0000 |
---|---|---|
committer | Chris Coulson <chrisccoulson@ubuntu.com> | 2011-03-01 14:45:06 +0000 |
commit | d53aa22ffd52ca5d78de74faf7b52832a2ac0663 (patch) | |
tree | 0481d63e690c65c8d7309eecf74575e48ce82a01 /libdbusmenu-gtk | |
parent | 218b2b32a73881b198f09f74725d395d2d27acdc (diff) | |
download | libdbusmenu-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.c | 11 |
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); |