Mercurial > pidgin.yaz
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 |