Fixed a bug when forwarding/replying to mails
authorSergio Villar Senin <svillar@igalia.com>
Fri, 1 Dec 2006 12:19:42 +0000 (12:19 +0000)
committerSergio Villar Senin <svillar@igalia.com>
Fri, 1 Dec 2006 12:19:42 +0000 (12:19 +0000)
pmo-trunk-r513

src/gtk/modest-main-window.c
src/modest-mail-operation.c

index fe542a7..3f943ba 100644 (file)
@@ -242,20 +242,25 @@ on_menu_reply_forward (ModestMainWindow *self, guint action, GtkWidget *widget)
        error = NULL;
        reply_key = g_strdup_printf ("%s/%s", MODEST_CONF_NAMESPACE, MODEST_CONF_REPLY_TYPE);
        reply_type = modest_conf_get_int (conf, reply_key, &error);
-       if (error) {
+       if (error || reply_type == 0) {
                g_warning ("key %s not defined", reply_key);
                reply_type = MODEST_MAIL_OPERATION_REPLY_TYPE_CITE;
-               g_error_free (error);
-               error = NULL;
+               if (error) {
+                       g_error_free (error);
+                       error = NULL;
+               }
        }
        g_free (reply_key);
        
        forward_key = g_strdup_printf ("%s/%s", MODEST_CONF_NAMESPACE, MODEST_CONF_FORWARD_TYPE);
        forward_type = modest_conf_get_int (conf, forward_key, NULL);
-       if (error) {
+       if (error || forward_type == 0) {
                g_warning ("key %s not defined", forward_key);
-               reply_type = MODEST_MAIL_OPERATION_FORWARD_TYPE_INLINE;
-               g_error_free (error);
+               forward_type = MODEST_MAIL_OPERATION_FORWARD_TYPE_INLINE;
+               if (error) {
+                       g_error_free (error);
+                       error = NULL;
+               }
        }
        g_free (forward_key);
        
@@ -297,19 +302,22 @@ on_menu_reply_forward (ModestMainWindow *self, guint action, GtkWidget *widget)
                                g_warning ("unexpected action type: %d", action);
                        }
 
-                       /* Set from */
-                       new_header = tny_msg_get_header (new_msg);
-                       tny_header_set_from (new_header, 
-                                            modest_folder_view_get_selected_account (priv->folder_view));
-
-                       /* Show edit window */
-                       msg_win = modest_edit_msg_window_new (priv->widget_factory,
-                                                             edit_type,
-                                                             new_msg);
-                       gtk_widget_show (msg_win);
+                       if (new_msg) {
+                               /* Set from */
+                               new_header = tny_msg_get_header (new_msg);
+                               tny_header_set_from (new_header, 
+                                                    modest_folder_view_get_selected_account (priv->folder_view));
+                               
+                               /* Show edit window */
+                               msg_win = modest_edit_msg_window_new (priv->widget_factory,
+                                                                     edit_type,
+                                                                     new_msg);
+                               gtk_widget_show (msg_win);
+                               
+                               /* Clean and go on */
+                               g_object_unref (new_msg);
+                       }
 
-                       /* Clean and go on */
-                       g_object_unref (new_msg);
                        tny_iterator_next (iter);
 
                } while (!tny_iterator_is_done (iter));
index 9582a4b..b656804 100644 (file)
@@ -46,6 +46,7 @@
 #include "modest-text-utils.h"
 #include "modest-tny-msg-actions.h"
 #include "modest-tny-platform-factory.h"
+#include "modest-marshal.h"
 
 /* 'private'/'protected' functions */
 static void modest_mail_operation_class_init (ModestMailOperationClass *klass);
@@ -305,6 +306,10 @@ modest_mail_operation_create_forward_mail (TnyMsg *msg,
        TnyList *parts;
        TnyIterator *iter;
 
+       g_return_val_if_fail (TNY_IS_MSG (msg), NULL);
+       g_return_val_if_fail (from != NULL    , NULL);
+       g_return_val_if_fail (forward_type > 0, NULL);
+
        /* Create new objects */
        new_msg          = TNY_MSG (tny_camel_msg_new ());
        new_header       = TNY_HEADER (tny_camel_header_new ());
@@ -322,7 +327,7 @@ modest_mail_operation_create_forward_mail (TnyMsg *msg,
        g_free (new_subject);
 
        /* Get body from original msg */
-       new_body = (gchar *) modest_tny_msg_actions_find_body (msg, FALSE);
+       new_body = (gchar *) modest_tny_msg_actions_find_body (msg, TRUE);
        if (!new_body) {
                g_object_unref (new_msg);
                return NULL;
@@ -377,6 +382,9 @@ modest_mail_operation_create_forward_mail (TnyMsg *msg,
                tny_mime_part_set_filename (attachment_part, tny_header_get_subject (header));
                
                break;
+       default:
+               g_warning (_("Invalid forward type"));
+               g_free (new_msg);
        }
 
        /* Clean */
@@ -460,7 +468,7 @@ modest_mail_operation_create_reply_mail (TnyMsg *msg,
        g_free (new_subject);
 
        /* Get body from original msg */
-       new_body = (gchar*) modest_tny_msg_actions_find_body (msg, FALSE);
+       new_body = (gchar*) modest_tny_msg_actions_find_body (msg, TRUE);
        if (!new_body) {
                g_object_unref (new_msg);
                return NULL;
@@ -572,9 +580,10 @@ modest_mail_operation_update_account (ModestMailOperation *mail_op,
                
                cur_folder = TNY_FOLDER (tny_iterator_get_current (ifolders));
                helper = g_slice_new0 (AsyncHelper);
-               helper->mail_op = mail_op;
+               helper->mail_op   = mail_op;
                helper->user_data = user_data;
-               helper->cb = callback;
+               helper->cb        = G_CALLBACK (callback);
+
                tny_folder_refresh_async (cur_folder, folder_refresh_cb,
                                          status_update_cb, helper);
        }
@@ -658,7 +667,7 @@ modest_mail_operation_create_folder (ModestMailOperation *mail_op,
 
        /* Subscribe to folder */
        if (!tny_folder_is_subscribed (new_folder)) {
-               store_account = tny_folder_get_account (TNY_FOLDER (parent));
+               store_account = TNY_STORE_ACCOUNT (tny_folder_get_account (TNY_FOLDER (parent)));
                tny_store_account_subscribe (store_account, new_folder);
                g_object_unref (G_OBJECT (store_account));
        }