Mercurial > pidgin
diff src/gtkaccount.c @ 5870:44d381ad19a9
[gaim-migrate @ 6302]
This is some mem leak fixes.
I made the select buddy icon dialog be openable twice, and not give gdk messages.
It should all be reasonably clutch.
Also, tonight is Chips & Dip night, so get some Chips & Dip, some people,
possibly some alcohol, and probably a movie.
committer: Tailor Script <tailor@pidgin.im>
author | Mark Doliner <mark@kingant.net> |
---|---|
date | Sat, 14 Jun 2003 20:23:20 +0000 |
parents | a479e218c54b |
children | 059d95c67cda |
line wrap: on
line diff
--- a/src/gtkaccount.c Sat Jun 14 18:49:20 2003 +0000 +++ b/src/gtkaccount.c Sat Jun 14 20:23:20 2003 +0000 @@ -210,12 +210,15 @@ static void buddy_icon_filesel_delete_cb (GtkWidget *w, AccountPrefsDialog *dialog) { + if (dialog->buddy_icon_filesel != NULL) + gtk_widget_destroy(dialog->buddy_icon_filesel); dialog->buddy_icon_filesel = NULL; } static void buddy_icon_filesel_choose (GtkWidget *w, AccountPrefsDialog *dialog) { const char *filename = gtk_file_selection_get_filename(GTK_FILE_SELECTION(dialog->buddy_icon_filesel)); + if (dialog->account) gaim_account_set_buddy_icon(dialog->account, filename); gtk_entry_set_text(GTK_ENTRY(dialog->buddy_icon_entry), filename); @@ -254,6 +257,7 @@ g_object_unref(G_OBJECT(scale)); g_free(basename); g_free(size); + g_free(markup); } static void buddy_icon_select_cb(GtkWidget *button, AccountPrefsDialog *dialog) @@ -263,10 +267,11 @@ GtkTreeSelection *sel; if (dialog->buddy_icon_filesel) { - gdk_window_show(GDK_WINDOW(dialog->buddy_icon_filesel)); + gtk_widget_show(GTK_WIDGET(dialog->buddy_icon_filesel)); + gdk_window_raise(GDK_WINDOW(dialog->buddy_icon_filesel->window)); return; } - + dialog->buddy_icon_filesel = gtk_file_selection_new(_("Buddy Icon")); dialog->buddy_icon_preview = gtk_image_new(); dialog->buddy_icon_text = gtk_label_new(NULL); @@ -276,24 +281,24 @@ FALSE, FALSE, 0); gtk_box_pack_end(GTK_BOX(hbox), dialog->buddy_icon_preview, FALSE, FALSE, 0); gtk_box_pack_end(GTK_BOX(hbox), dialog->buddy_icon_text, FALSE, FALSE, 0); - + tv = GTK_FILE_SELECTION(dialog->buddy_icon_filesel)->file_list; sel = gtk_tree_view_get_selection(GTK_TREE_VIEW(tv)); g_signal_connect(G_OBJECT(sel), "changed", G_CALLBACK(buddy_icon_preview_change_cb), dialog); - g_signal_connect(G_OBJECT(dialog->buddy_icon_filesel), "delete_event", G_CALLBACK(buddy_icon_filesel_delete_cb), dialog); - g_signal_connect_swapped(G_OBJECT(GTK_FILE_SELECTION(dialog->buddy_icon_filesel)->cancel_button), "clicked", - G_CALLBACK(gtk_widget_destroy), dialog->buddy_icon_filesel); + g_signal_connect(G_OBJECT(dialog->buddy_icon_filesel), "destroy", G_CALLBACK(buddy_icon_filesel_delete_cb), dialog); + g_signal_connect(G_OBJECT(GTK_FILE_SELECTION(dialog->buddy_icon_filesel)->cancel_button), "clicked", + G_CALLBACK(buddy_icon_filesel_delete_cb), dialog); g_signal_connect(G_OBJECT(GTK_FILE_SELECTION(dialog->buddy_icon_filesel)->ok_button), "clicked", G_CALLBACK(buddy_icon_filesel_choose), dialog); - gtk_widget_show_all(dialog->buddy_icon_filesel); - if (dialog->account) { + gtk_widget_show_all(GTK_WIDGET(dialog->buddy_icon_filesel)); + if (dialog->account && (gaim_account_get_buddy_icon(dialog->account) != NULL)) { gtk_file_selection_set_filename(GTK_FILE_SELECTION(dialog->buddy_icon_filesel), gaim_account_get_buddy_icon(dialog->account)); buddy_icon_preview_change_cb(NULL, dialog); } - + } static void buddy_icon_reset_cb(GtkWidget *button, AccountPrefsDialog *dialog)