Mercurial > pidgin
diff gtk/gtknotify.c @ 15324:e3ea20c6e73f
[gaim-migrate @ 18115]
Add a destroy-notify function for the blist-headline. If you close a headline
by clicking the cross, or if some headline is replaced by another one, this is
not going to leak anymore.
committer: Tailor Script <tailor@pidgin.im>
author | Sadrul Habib Chowdhury <imadil@gmail.com> |
---|---|
date | Fri, 12 Jan 2007 22:17:32 +0000 |
parents | bfc90a066604 |
children | 1f33d20e973d |
line wrap: on
line diff
--- a/gtk/gtknotify.c Fri Jan 12 17:43:25 2007 +0000 +++ b/gtk/gtknotify.c Fri Jan 12 22:17:32 2007 +0000 @@ -155,6 +155,15 @@ } static void +reset_mail_dialog(GtkDialog *dialog) +{ + gaim_debug_fatal("WRTF!!", "resetting mail dialog\n"); + gtk_widget_destroy(mail_dialog->dialog); + g_free(mail_dialog); + mail_dialog = NULL; +} + +static void formatted_close_cb(GtkWidget *win, GdkEvent *event, void *user_data) { gaim_notify_close(GAIM_NOTIFY_FORMATTED, win); @@ -312,12 +321,18 @@ }; static void +free_inbox(struct inbox_info *inbox) +{ + g_free(inbox->url); + g_free(inbox); +} + +static void open_inbox_cb(struct inbox_info *inbox) { if (inbox->url) gaim_notify_uri(inbox->handle, inbox->url); - g_free(inbox->url); - g_free(inbox); + free_inbox(inbox); } @@ -348,7 +363,8 @@ inbox->handle = gc; inbox->url = urls ? g_strdup(urls[0]) : NULL; gaim_gtk_blist_set_headline(label_text, - pixbuf, G_CALLBACK(open_inbox_cb), inbox); + pixbuf, G_CALLBACK(open_inbox_cb), inbox, + (GDestroyNotify)free_inbox); g_object_unref(pixbuf); return NULL; } @@ -540,7 +556,8 @@ "<b>You have %d new e-mails.</b>", mail_dialog->total_count), mail_dialog->total_count); gaim_gtk_blist_set_headline(label_text, - pixbuf, G_CALLBACK(gtk_widget_show_all), dialog); + pixbuf, G_CALLBACK(gtk_widget_show_all), dialog, + (GDestroyNotify)reset_mail_dialog); g_object_unref(pixbuf); }