Mercurial > pidgin.yaz
comparison 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 |
comparison
equal
deleted
inserted
replaced
5869:2f86cf55b0e9 | 5870:44d381ad19a9 |
---|---|
208 *gtk_entry_get_text(entry) != '\0'); | 208 *gtk_entry_get_text(entry) != '\0'); |
209 } | 209 } |
210 | 210 |
211 static void buddy_icon_filesel_delete_cb (GtkWidget *w, AccountPrefsDialog *dialog) | 211 static void buddy_icon_filesel_delete_cb (GtkWidget *w, AccountPrefsDialog *dialog) |
212 { | 212 { |
213 if (dialog->buddy_icon_filesel != NULL) | |
214 gtk_widget_destroy(dialog->buddy_icon_filesel); | |
213 dialog->buddy_icon_filesel = NULL; | 215 dialog->buddy_icon_filesel = NULL; |
214 } | 216 } |
215 | 217 |
216 static void buddy_icon_filesel_choose (GtkWidget *w, AccountPrefsDialog *dialog) | 218 static void buddy_icon_filesel_choose (GtkWidget *w, AccountPrefsDialog *dialog) |
217 { | 219 { |
218 const char *filename = gtk_file_selection_get_filename(GTK_FILE_SELECTION(dialog->buddy_icon_filesel)); | 220 const char *filename = gtk_file_selection_get_filename(GTK_FILE_SELECTION(dialog->buddy_icon_filesel)); |
221 | |
219 if (dialog->account) | 222 if (dialog->account) |
220 gaim_account_set_buddy_icon(dialog->account, filename); | 223 gaim_account_set_buddy_icon(dialog->account, filename); |
221 gtk_entry_set_text(GTK_ENTRY(dialog->buddy_icon_entry), filename); | 224 gtk_entry_set_text(GTK_ENTRY(dialog->buddy_icon_entry), filename); |
222 gtk_widget_destroy(dialog->buddy_icon_filesel); | 225 gtk_widget_destroy(dialog->buddy_icon_filesel); |
223 } | 226 } |
252 | 255 |
253 g_object_unref(G_OBJECT(pixbuf)); | 256 g_object_unref(G_OBJECT(pixbuf)); |
254 g_object_unref(G_OBJECT(scale)); | 257 g_object_unref(G_OBJECT(scale)); |
255 g_free(basename); | 258 g_free(basename); |
256 g_free(size); | 259 g_free(size); |
260 g_free(markup); | |
257 } | 261 } |
258 | 262 |
259 static void buddy_icon_select_cb(GtkWidget *button, AccountPrefsDialog *dialog) | 263 static void buddy_icon_select_cb(GtkWidget *button, AccountPrefsDialog *dialog) |
260 { | 264 { |
261 GtkWidget *hbox; | 265 GtkWidget *hbox; |
262 GtkWidget *tv; | 266 GtkWidget *tv; |
263 GtkTreeSelection *sel; | 267 GtkTreeSelection *sel; |
264 | 268 |
265 if (dialog->buddy_icon_filesel) { | 269 if (dialog->buddy_icon_filesel) { |
266 gdk_window_show(GDK_WINDOW(dialog->buddy_icon_filesel)); | 270 gtk_widget_show(GTK_WIDGET(dialog->buddy_icon_filesel)); |
271 gdk_window_raise(GDK_WINDOW(dialog->buddy_icon_filesel->window)); | |
267 return; | 272 return; |
268 } | 273 } |
269 | 274 |
270 dialog->buddy_icon_filesel = gtk_file_selection_new(_("Buddy Icon")); | 275 dialog->buddy_icon_filesel = gtk_file_selection_new(_("Buddy Icon")); |
271 dialog->buddy_icon_preview = gtk_image_new(); | 276 dialog->buddy_icon_preview = gtk_image_new(); |
272 dialog->buddy_icon_text = gtk_label_new(NULL); | 277 dialog->buddy_icon_text = gtk_label_new(NULL); |
273 gtk_widget_set_size_request(GTK_WIDGET(dialog->buddy_icon_preview), -1, 50); | 278 gtk_widget_set_size_request(GTK_WIDGET(dialog->buddy_icon_preview), -1, 50); |
274 hbox = gtk_hbox_new(FALSE, 6); | 279 hbox = gtk_hbox_new(FALSE, 6); |
275 gtk_box_pack_start(GTK_BOX(GTK_FILE_SELECTION(dialog->buddy_icon_filesel)->main_vbox), hbox, | 280 gtk_box_pack_start(GTK_BOX(GTK_FILE_SELECTION(dialog->buddy_icon_filesel)->main_vbox), hbox, |
276 FALSE, FALSE, 0); | 281 FALSE, FALSE, 0); |
277 gtk_box_pack_end(GTK_BOX(hbox), dialog->buddy_icon_preview, FALSE, FALSE, 0); | 282 gtk_box_pack_end(GTK_BOX(hbox), dialog->buddy_icon_preview, FALSE, FALSE, 0); |
278 gtk_box_pack_end(GTK_BOX(hbox), dialog->buddy_icon_text, FALSE, FALSE, 0); | 283 gtk_box_pack_end(GTK_BOX(hbox), dialog->buddy_icon_text, FALSE, FALSE, 0); |
279 | 284 |
280 tv = GTK_FILE_SELECTION(dialog->buddy_icon_filesel)->file_list; | 285 tv = GTK_FILE_SELECTION(dialog->buddy_icon_filesel)->file_list; |
281 sel = gtk_tree_view_get_selection(GTK_TREE_VIEW(tv)); | 286 sel = gtk_tree_view_get_selection(GTK_TREE_VIEW(tv)); |
282 g_signal_connect(G_OBJECT(sel), "changed", G_CALLBACK(buddy_icon_preview_change_cb), dialog); | 287 g_signal_connect(G_OBJECT(sel), "changed", G_CALLBACK(buddy_icon_preview_change_cb), dialog); |
283 | 288 |
284 g_signal_connect(G_OBJECT(dialog->buddy_icon_filesel), "delete_event", G_CALLBACK(buddy_icon_filesel_delete_cb), dialog); | 289 g_signal_connect(G_OBJECT(dialog->buddy_icon_filesel), "destroy", G_CALLBACK(buddy_icon_filesel_delete_cb), dialog); |
285 g_signal_connect_swapped(G_OBJECT(GTK_FILE_SELECTION(dialog->buddy_icon_filesel)->cancel_button), "clicked", | 290 g_signal_connect(G_OBJECT(GTK_FILE_SELECTION(dialog->buddy_icon_filesel)->cancel_button), "clicked", |
286 G_CALLBACK(gtk_widget_destroy), dialog->buddy_icon_filesel); | 291 G_CALLBACK(buddy_icon_filesel_delete_cb), dialog); |
287 g_signal_connect(G_OBJECT(GTK_FILE_SELECTION(dialog->buddy_icon_filesel)->ok_button), "clicked", G_CALLBACK(buddy_icon_filesel_choose), | 292 g_signal_connect(G_OBJECT(GTK_FILE_SELECTION(dialog->buddy_icon_filesel)->ok_button), "clicked", G_CALLBACK(buddy_icon_filesel_choose), |
288 dialog); | 293 dialog); |
289 | 294 |
290 gtk_widget_show_all(dialog->buddy_icon_filesel); | 295 gtk_widget_show_all(GTK_WIDGET(dialog->buddy_icon_filesel)); |
291 if (dialog->account) { | 296 if (dialog->account && (gaim_account_get_buddy_icon(dialog->account) != NULL)) { |
292 gtk_file_selection_set_filename(GTK_FILE_SELECTION(dialog->buddy_icon_filesel), | 297 gtk_file_selection_set_filename(GTK_FILE_SELECTION(dialog->buddy_icon_filesel), |
293 gaim_account_get_buddy_icon(dialog->account)); | 298 gaim_account_get_buddy_icon(dialog->account)); |
294 buddy_icon_preview_change_cb(NULL, dialog); | 299 buddy_icon_preview_change_cb(NULL, dialog); |
295 } | 300 } |
296 | 301 |
297 } | 302 } |
298 | 303 |
299 static void buddy_icon_reset_cb(GtkWidget *button, AccountPrefsDialog *dialog) | 304 static void buddy_icon_reset_cb(GtkWidget *button, AccountPrefsDialog *dialog) |
300 { | 305 { |
301 gtk_entry_set_text(GTK_ENTRY(dialog->buddy_icon_entry), ""); | 306 gtk_entry_set_text(GTK_ENTRY(dialog->buddy_icon_entry), ""); |