comparison finch/gntrequest.c @ 18411:3849776d0f71

Fix some crashes resulting from rejecting file-transfer requests.
author Sadrul Habib Chowdhury <imadil@gmail.com>
date Sun, 01 Jul 2007 17:05:16 +0000
parents 719f73b9a593
children b7fa8fa4de5b ae6b1f1c6686 315151da0dc6
comparison
equal deleted inserted replaced
18410:719f73b9a593 18411:3849776d0f71
580 580
581 return window; 581 return window;
582 } 582 }
583 583
584 static void 584 static void
585 file_cancel_cb(GntWidget *wid, gpointer fq) 585 file_cancel_cb(gpointer fq, GntWidget *wid)
586 { 586 {
587 PurpleGntFileRequest *data = fq; 587 PurpleGntFileRequest *data = fq;
588 if (data->cbs[1] != NULL) 588 if (data->cbs[1] != NULL)
589 ((PurpleRequestFileCb)data->cbs[1])(data->user_data, NULL); 589 ((PurpleRequestFileCb)data->cbs[1])(data->user_data, NULL);
590 590
591 purple_request_close(PURPLE_REQUEST_FILE, data->dialog); 591 purple_request_close(PURPLE_REQUEST_FILE, data->dialog);
592 } 592 }
593 593
594 static void 594 static void
595 file_ok_cb(GntWidget *wid, gpointer fq) 595 file_ok_cb(gpointer fq, GntWidget *widget)
596 { 596 {
597 PurpleGntFileRequest *data = fq; 597 PurpleGntFileRequest *data = fq;
598 char *file = gnt_file_sel_get_selected_file(GNT_FILE_SEL(data->dialog)); 598 char *file = gnt_file_sel_get_selected_file(GNT_FILE_SEL(data->dialog));
599 char *dir = g_path_get_dirname(file); 599 char *dir = g_path_get_dirname(file);
600 if (data->cbs[0] != NULL) 600 if (data->cbs[0] != NULL)
637 path = purple_prefs_get_path(savedialog ? "/finch/filelocations/last_save_folder" : "/finch/filelocations/last_open_folder"); 637 path = purple_prefs_get_path(savedialog ? "/finch/filelocations/last_save_folder" : "/finch/filelocations/last_open_folder");
638 gnt_file_sel_set_current_location(sel, (path && *path) ? path : purple_home_dir()); 638 gnt_file_sel_set_current_location(sel, (path && *path) ? path : purple_home_dir());
639 639
640 if (savedialog) 640 if (savedialog)
641 gnt_file_sel_set_suggested_filename(sel, filename); 641 gnt_file_sel_set_suggested_filename(sel, filename);
642
642 g_signal_connect(G_OBJECT(sel->cancel), "activate", 643 g_signal_connect(G_OBJECT(sel->cancel), "activate",
644 G_CALLBACK(action_performed), window);
645 g_signal_connect(G_OBJECT(sel->select), "activate",
646 G_CALLBACK(action_performed), window);
647 g_signal_connect_swapped(G_OBJECT(sel->cancel), "activate",
643 G_CALLBACK(file_cancel_cb), data); 648 G_CALLBACK(file_cancel_cb), data);
644 g_signal_connect(G_OBJECT(sel->select), "activate", 649 g_signal_connect_swapped(G_OBJECT(sel->select), "activate",
645 G_CALLBACK(file_ok_cb), data); 650 G_CALLBACK(file_ok_cb), data);
646 g_signal_connect_swapped(G_OBJECT(window), "destroy", 651
647 G_CALLBACK(file_request_destroy), data); 652 setup_default_callback(window, file_cancel_cb, data);
648 653 g_object_set_data_full(G_OBJECT(window), "filerequestdata", data,
654 (GDestroyNotify)file_request_destroy);
649 gnt_widget_show(window); 655 gnt_widget_show(window);
650 656
651 return window; 657 return window;
652 } 658 }
653 659