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), "");