diff options
author | Ted Gould <ted@gould.cx> | 2011-04-07 14:31:17 -0500 |
---|---|---|
committer | Ted Gould <ted@gould.cx> | 2011-04-07 14:31:17 -0500 |
commit | 2b2ee981c958992e25ecfb1067f2a244166b1b28 (patch) | |
tree | 3608adedd62175ac7bdb5c4850de4241f0693e83 | |
parent | 4f43bbc76e738ecb3b03d848b447ac9dfe64faa3 (diff) | |
download | libdbusmenu-2b2ee981c958992e25ecfb1067f2a244166b1b28.tar.gz libdbusmenu-2b2ee981c958992e25ecfb1067f2a244166b1b28.tar.bz2 libdbusmenu-2b2ee981c958992e25ecfb1067f2a244166b1b28.zip |
Switching the reference to the GTK Menuitem to be a _sink as well as using set_data_full() instead of a weak ref for unref'ing it.
-rw-r--r-- | libdbusmenu-gtk/client.c | 23 |
1 files changed, 2 insertions, 21 deletions
diff --git a/libdbusmenu-gtk/client.c b/libdbusmenu-gtk/client.c index 7f05d46..fb08bbe 100644 --- a/libdbusmenu-gtk/client.c +++ b/libdbusmenu-gtk/client.c @@ -616,19 +616,6 @@ menu_shortcut_change_cb (DbusmenuMenuitem * mi, gchar * prop, GVariant * value, return; } -/* Call back that happens when the DbusmenuMenuitem - is destroyed. We're making sure to clean up everything - else down the pipe. */ -static void -destoryed_dbusmenuitem_cb (gpointer udata, GObject * dbusmenuitem) -{ - #ifdef MASSIVEDEBUGGING - g_debug("DbusmenuMenuitem was destroyed"); - #endif - gtk_widget_destroy(GTK_WIDGET(udata)); - return; -} - /* The new menuitem signal only happens if we don't have a type handler for the type of the item. This should be an error condition and we're printing out a message. */ @@ -731,11 +718,8 @@ dbusmenu_gtkclient_newitem_base (DbusmenuGtkClient * client, DbusmenuMenuitem * #endif /* Attach these two */ - g_object_set_data(G_OBJECT(item), data_menuitem, gmi); - g_object_ref(G_OBJECT(gmi)); - #ifdef MASSIVEDEBUGGING - g_signal_connect(G_OBJECT(gmi), "destroy", G_CALLBACK(destroy_gmi), item); - #endif + g_object_ref_sink(G_OBJECT(gmi)); + g_object_set_data_full(G_OBJECT(item), data_menuitem, gmi, g_object_unref); /* DbusmenuMenuitem signals */ g_signal_connect(G_OBJECT(item), DBUSMENU_MENUITEM_SIGNAL_PROPERTY_CHANGED, G_CALLBACK(menu_prop_change_cb), client); @@ -746,9 +730,6 @@ dbusmenu_gtkclient_newitem_base (DbusmenuGtkClient * client, DbusmenuMenuitem * /* GtkMenuitem signals */ g_signal_connect(G_OBJECT(gmi), "activate", G_CALLBACK(menu_pressed_cb), item); - /* Life insurance */ - g_object_weak_ref(G_OBJECT(item), destoryed_dbusmenuitem_cb, gmi); - /* Check our set of props to see if any are set already */ process_visible(item, gmi, dbusmenu_menuitem_property_get_variant(item, DBUSMENU_MENUITEM_PROP_VISIBLE)); process_sensitive(item, gmi, dbusmenu_menuitem_property_get_variant(item, DBUSMENU_MENUITEM_PROP_ENABLED)); |