aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTed Gould <ted@gould.cx>2011-02-24 10:23:50 -0600
committerTed Gould <ted@gould.cx>2011-02-24 10:23:50 -0600
commitdc6b4bb04ed3af5311ca234fdb119c47228abc30 (patch)
treef069ff534098971e6e52bb52b86b4e67da01c684
parente2450d6610c20ea58f3626c60d9f438701cbcdb5 (diff)
parent017f243186a993adda6b55eac436bb7b6ce784c2 (diff)
downloadlibdbusmenu-dc6b4bb04ed3af5311ca234fdb119c47228abc30.tar.gz
libdbusmenu-dc6b4bb04ed3af5311ca234fdb119c47228abc30.tar.bz2
libdbusmenu-dc6b4bb04ed3af5311ca234fdb119c47228abc30.zip
Unregister the theme signal handler on destruction instead of doing it through an odd reference.
-rw-r--r--libdbusmenu-gtk/parser.c13
1 files changed, 3 insertions, 10 deletions
diff --git a/libdbusmenu-gtk/parser.c b/libdbusmenu-gtk/parser.c
index f2fcb58..a68508b 100644
--- a/libdbusmenu-gtk/parser.c
+++ b/libdbusmenu-gtk/parser.c
@@ -161,17 +161,10 @@ dbusmenu_item_freed (gpointer data, GObject * obj)
}
}
-/* Called if we replace the cache on the object with a new
- dbusmenu menuitem */
static void
-object_cache_freed (gpointer data)
+widget_freed (gpointer data, GObject * obj)
{
- // TODO: make this have access to both data and obj so we can call these
- //if (!G_IS_OBJECT(obj)) return;
- //g_object_weak_unref(G_OBJECT(obj), dbusmenu_cache_freed, data);
- //dbusmenu_cache_freed(data, obj);
-
- g_signal_handlers_disconnect_by_func(gtk_icon_theme_get_default(), G_CALLBACK(theme_changed_cb), data);
+ g_signal_handlers_disconnect_by_func(gtk_icon_theme_get_default(), G_CALLBACK(theme_changed_cb), obj);
return;
}
@@ -213,8 +206,8 @@ new_menuitem (GtkWidget * widget)
ParserData *pdata = g_new0 (ParserData, 1);
g_object_set_data_full(G_OBJECT(item), PARSER_DATA, pdata, parse_data_free);
- g_object_set_data_full(G_OBJECT(widget), CACHED_MENUITEM, item, object_cache_freed);
g_object_weak_ref(G_OBJECT(item), dbusmenu_item_freed, NULL);
+ g_object_weak_ref(G_OBJECT(widget), widget_freed, NULL);
pdata->widget = widget;
g_object_add_weak_pointer(G_OBJECT (widget), (gpointer*)&pdata->widget);