| 2278 PurpleRequestCommonParameters *cpar, void *user_data) |
2278 PurpleRequestCommonParameters *cpar, void *user_data) |
| 2279 { |
2279 { |
| 2280 PidginRequestData *data; |
2280 PidginRequestData *data; |
| 2281 GtkFileChooserNative *filesel; |
2281 GtkFileChooserNative *filesel; |
| 2282 #ifdef _WIN32 |
2282 #ifdef _WIN32 |
| |
2283 GFile *file = NULL; |
| 2283 const gchar *current_folder; |
2284 const gchar *current_folder; |
| 2284 gboolean folder_set = FALSE; |
2285 gboolean folder_set = FALSE; |
| 2285 #endif |
2286 #endif |
| 2286 |
2287 |
| 2287 data = g_new0(PidginRequestData, 1); |
2288 data = g_new0(PidginRequestData, 1); |
| 2319 } else { |
2320 } else { |
| 2320 current_folder = purple_prefs_get_path(PIDGIN_PREFS_ROOT "/filelocations/last_open_folder"); |
2321 current_folder = purple_prefs_get_path(PIDGIN_PREFS_ROOT "/filelocations/last_open_folder"); |
| 2321 } |
2322 } |
| 2322 |
2323 |
| 2323 if ((filename == NULL || *filename == '\0' || !g_file_test(filename, G_FILE_TEST_EXISTS)) && |
2324 if ((filename == NULL || *filename == '\0' || !g_file_test(filename, G_FILE_TEST_EXISTS)) && |
| 2324 (current_folder != NULL) && (*current_folder != '\0')) { |
2325 (current_folder != NULL) && (*current_folder != '\0')) |
| 2325 folder_set = gtk_file_chooser_set_current_folder(GTK_FILE_CHOOSER(filesel), current_folder); |
2326 { |
| |
2327 file = g_file_new_for_path(current_folder); |
| |
2328 folder_set = gtk_file_chooser_set_current_folder(GTK_FILE_CHOOSER(filesel), file, NULL); |
| 2326 } |
2329 } |
| 2327 |
2330 |
| 2328 if (!folder_set && (filename == NULL || *filename == '\0' || !g_file_test(filename, G_FILE_TEST_EXISTS))) { |
2331 if (!folder_set && (filename == NULL || *filename == '\0' || !g_file_test(filename, G_FILE_TEST_EXISTS))) { |
| 2329 char *my_documents = wpurple_get_special_folder(CSIDL_PERSONAL); |
2332 char *my_documents = wpurple_get_special_folder(CSIDL_PERSONAL); |
| 2330 |
2333 |
| |
2334 g_clear_object(&file); |
| |
2335 |
| 2331 if (my_documents != NULL) { |
2336 if (my_documents != NULL) { |
| |
2337 file = g_file_new_for_path(my_documents); |
| 2332 gtk_file_chooser_set_current_folder( |
2338 gtk_file_chooser_set_current_folder( |
| 2333 GTK_FILE_CHOOSER(filesel), my_documents); |
2339 GTK_FILE_CHOOSER(filesel), file, NULL); |
| 2334 |
2340 |
| 2335 g_free(my_documents); |
2341 g_free(my_documents); |
| 2336 } |
2342 } |
| 2337 } |
2343 } |
| |
2344 |
| |
2345 g_clear_object(&file); |
| 2338 #endif |
2346 #endif |
| 2339 |
2347 |
| 2340 g_signal_connect(G_OBJECT(GTK_FILE_CHOOSER(filesel)), "response", |
2348 g_signal_connect(G_OBJECT(GTK_FILE_CHOOSER(filesel)), "response", |
| 2341 G_CALLBACK(file_ok_check_if_exists_cb), data); |
2349 G_CALLBACK(file_ok_check_if_exists_cb), data); |
| 2342 |
2350 |