Perform a sync() of the currently viewed folder when doing send/receive
[modest] / src / modest-ui-actions.c
index 8e4185b..87f8627 100644 (file)
@@ -2151,6 +2151,25 @@ modest_ui_actions_on_sort (GtkAction *action,
        modest_utils_run_sort_dialog (GTK_WINDOW (window), MODEST_SORT_HEADERS);
 }
 
+static void
+sync_folder_cb (TnyFolder *folder,
+               gboolean cancelled,
+               GError *err,
+               gpointer user_data)
+{
+       ModestHeaderView *header_view = (ModestHeaderView *) user_data;
+
+       tny_folder_refresh_async (folder, NULL, NULL, NULL);
+       /* ModestWindow *parent = (ModestWindow *) gtk_widget_get_ancestor ((GtkWidget *) user_data, GTK_TYPE_WINDOW); */
+
+       /* We must clear first, because otherwise set_folder will ignore
+          the change as the folders are the same */
+       /* modest_header_view_clear (header_view); */
+       /* modest_header_view_set_folder (header_view, folder, TRUE, parent, NULL, NULL); */
+
+       g_object_unref (header_view);
+}
+
 static gboolean
 idle_refresh_folder (gpointer source)
 {
@@ -2173,11 +2192,8 @@ idle_refresh_folder (gpointer source)
        if (header_view) {
                TnyFolder *folder = modest_header_view_get_folder (header_view);
                if (folder) {
-                       /* We must clear first, because otherwise set_folder will ignore
-                          the change as the folders are the same */
-                       modest_header_view_clear (header_view);
-                       modest_header_view_set_folder (header_view, folder, TRUE,
-                                                      (ModestWindow *) source, NULL, NULL);
+                       /* Sync the folder status */
+                       tny_folder_sync_async (folder, TRUE, sync_folder_cb, NULL, g_object_ref (header_view));
                        g_object_unref (folder);
                }
        }
@@ -3145,12 +3161,6 @@ modest_ui_actions_on_send (GtkWidget *widget, ModestMsgEditWindow *edit_window)
 
        data = modest_msg_edit_window_get_msg_data (edit_window);
 
-       if (data->subject == NULL || data->subject[0] == '\0') {
-               /* Empty subject -> no send */
-               modest_msg_edit_window_free_msg_data (edit_window, data);
-               return FALSE;
-       }
-
        recipients = g_strconcat (data->to?data->to:"", 
                                  data->cc?data->cc:"",
                                  data->bcc?data->bcc:"",
@@ -3186,7 +3196,7 @@ modest_ui_actions_on_send (GtkWidget *widget, ModestMsgEditWindow *edit_window)
        }
 
        /* Get the currently-active transport account for this modest account: */
-       if (strcmp (account_name, MODEST_LOCAL_FOLDERS_ACCOUNT_ID) != 0) {
+       if (account_name && strcmp (account_name, MODEST_LOCAL_FOLDERS_ACCOUNT_ID) != 0) {
                transport_account =
                        TNY_TRANSPORT_ACCOUNT(modest_tny_account_store_get_server_account
                                              (modest_runtime_get_account_store (),