- if (do_xfer) /* Transfer messages */ {
- DoubleConnectionInfo *connect_info = g_slice_new (DoubleConnectionInfo);
- connect_info->callback = xfer_messages_from_move_to_cb;
- connect_info->dst_account = tny_folder_get_account (TNY_FOLDER (dst_folder));
- connect_info->data = g_object_ref (dst_folder);
-
- modest_platform_double_connect_and_perform(GTK_WINDOW (win), TRUE,
- TNY_FOLDER_STORE (src_folder),
- connect_info);
+ /* Transfer messages */
+ if (do_xfer) {
+ TnyList *headers = modest_header_view_get_selected_headers(header_view);
+ gint uncached = header_list_count_uncached_msgs (headers);
+ g_object_unref (headers);
+
+ /* If there are almost 1 message that it's not
+ fully downloaded then request a new connection */
+ if (uncached > 0) {
+ DoubleConnectionInfo *connect_info = g_slice_new (DoubleConnectionInfo);
+ connect_info->callback = xfer_messages_from_move_to_cb;
+ connect_info->dst_account = tny_folder_get_account (TNY_FOLDER (dst_folder));
+ connect_info->data = g_object_ref (dst_folder);
+
+ modest_platform_double_connect_and_perform(GTK_WINDOW (win), TRUE,
+ TNY_FOLDER_STORE (src_folder),
+ connect_info);
+ } else {
+ TnyAccount *account;
+ account = get_account_from_folder_store (TNY_FOLDER_STORE (src_folder));
+ xfer_messages_from_move_to_cb (FALSE, NULL, GTK_WINDOW (win),
+ account,
+ g_object_ref (dst_folder));
+ g_object_unref (account);
+ }