* Fixes NB#88246, do not crash when pasting a lot of directions in the to: field
[modest] / src / modest-ui-actions.c
index 8bae8df..93a69db 100644 (file)
@@ -738,9 +738,9 @@ modest_ui_actions_compose_msg(ModestWindow *win,
 
        signature = modest_account_mgr_get_signature (mgr, account_name, &use_signature);
        if (body_str != NULL) {
-               body = use_signature ? g_strconcat(body_str, "\n", signature, NULL) : g_strdup(body_str);
+               body = use_signature ? g_strconcat(body_str, "\n--\n", signature, NULL) : g_strdup(body_str);
        } else {
-               body = use_signature ? g_strconcat("\n", signature, NULL) : g_strdup("");
+               body = use_signature ? g_strconcat("\n--\n", signature, NULL) : g_strdup("");
        }
 
        msg = modest_tny_msg_new (to_str, from_str, cc_str, bcc_str, subject_str, body, NULL, NULL, NULL);
@@ -754,11 +754,15 @@ modest_ui_actions_compose_msg(ModestWindow *win,
        total_size = 0;
        allowed_size = MODEST_MAX_ATTACHMENT_SIZE;
        msg_win = modest_msg_edit_window_new (msg, account_name, FALSE);
+
+       modest_window_mgr_register_window (modest_runtime_get_window_mgr(), msg_win);
+       modest_msg_edit_window_set_modified (MODEST_MSG_EDIT_WINDOW (msg_win), set_as_modified);
+       gtk_widget_show_all (GTK_WIDGET (msg_win));
+
        while (attachments) {
                total_size +=
-                       modest_msg_edit_window_attach_file_one(
-                               (ModestMsgEditWindow *)msg_win,
-                               attachments->data, allowed_size);
+                       modest_msg_edit_window_attach_file_one((ModestMsgEditWindow *)msg_win,
+                                                              attachments->data, allowed_size);
 
                if (total_size > allowed_size) {
                        g_warning ("%s: total size: %u",
@@ -769,10 +773,6 @@ modest_ui_actions_compose_msg(ModestWindow *win,
 
                attachments = g_slist_next(attachments);
        }
-       modest_window_mgr_register_window (modest_runtime_get_window_mgr(), msg_win);
-       modest_msg_edit_window_set_modified (MODEST_MSG_EDIT_WINDOW (msg_win), set_as_modified);
-
-       gtk_widget_show_all (GTK_WIDGET (msg_win));
 
 cleanup:
        g_free (from_str);
@@ -2402,7 +2402,6 @@ modest_ui_actions_on_folder_selection_changed (ModestFolderView *folder_view,
                if (TNY_IS_FOLDER (folder_store) && selected) {
                        TnyAccount *account;
                        const gchar *account_name = NULL;
-                       gboolean refresh;
 
                        /* Update the active account */
                        account = modest_tny_folder_get_account (TNY_FOLDER (folder_store));
@@ -2420,8 +2419,6 @@ modest_ui_actions_on_folder_selection_changed (ModestFolderView *folder_view,
                        modest_main_window_set_contents_style (main_window, 
                                                               MODEST_MAIN_WINDOW_CONTENTS_STYLE_HEADERS);
 
-                       refresh = !modest_account_mgr_account_is_busy (modest_runtime_get_account_mgr (), account_name);
-
                        /* Set folder on header view. This function
                           will call tny_folder_refresh_async so we
                           pass a callback that will be called when
@@ -2429,7 +2426,7 @@ modest_ui_actions_on_folder_selection_changed (ModestFolderView *folder_view,
                           empty view if there are no messages */
                        modest_header_view_set_folder (MODEST_HEADER_VIEW(header_view),
                                                       TNY_FOLDER (folder_store),
-                                                      refresh,
+                                                      TRUE,
                                                       folder_refreshed_cb,
                                                       main_window);
                        
@@ -3293,7 +3290,7 @@ on_rename_folder_performer (gboolean canceled,
 
                /* Clear the headers view */
                sel = gtk_tree_view_get_selection (GTK_TREE_VIEW (folder_view));
-               gtk_tree_selection_unselect_all (sel);
+               gtk_tree_selection_unselect_all (sel);
 
                /* Actually rename the folder */
                modest_mail_operation_rename_folder (mail_op,
@@ -3301,6 +3298,7 @@ on_rename_folder_performer (gboolean canceled,
                                                     (const gchar *) (data->new_name),
                                                     on_rename_folder_cb,
                                                     folder_view);
+               g_object_unref (data->folder);
                g_object_unref (mail_op);
        }
 
@@ -3352,7 +3350,7 @@ modest_ui_actions_on_rename_folder (GtkAction *action,
                        do_rename = FALSE;
                } else {
                        RenameFolderInfo *rename_folder_data = g_new0 (RenameFolderInfo, 1);
-                       rename_folder_data->folder = folder;
+                       rename_folder_data->folder = g_object_ref (folder);
                        rename_folder_data->new_name = folder_name;
                        modest_platform_connect_if_remote_and_perform (GTK_WINDOW(main_window), TRUE,
                                        folder, on_rename_folder_performer, rename_folder_data);
@@ -4230,11 +4228,12 @@ headers_action_show_details (TnyHeader *header,
        dialog = modest_details_dialog_new_with_header (GTK_WINDOW (window), header);
 
        /* Run dialog */
-       gtk_window_set_modal (GTK_WINDOW (dialog), TRUE);
+       modest_window_mgr_set_modal (modest_runtime_get_window_mgr (), GTK_WINDOW (dialog));
        gtk_widget_show_all (dialog);
-       gtk_dialog_run (GTK_DIALOG (dialog));
 
-       gtk_widget_destroy (dialog);
+       g_signal_connect_swapped (dialog, "response", 
+                                 G_CALLBACK (gtk_widget_destroy),
+                                 dialog);
 }
 
 /*
@@ -5387,6 +5386,10 @@ modest_ui_actions_transfer_messages_helper (GtkWindow *win,
        gboolean need_connection = TRUE;
        gboolean do_xfer = TRUE;
        XferMsgsHelper *helper;
+
+       g_return_if_fail (TNY_IS_FOLDER (src_folder));
+       g_return_if_fail (TNY_IS_FOLDER (dst_folder));
+       g_return_if_fail (TNY_IS_LIST (headers));
        
        modest_ui_actions_xfer_messages_check (win, TNY_FOLDER_STORE (src_folder), 
                                               headers, TNY_FOLDER (dst_folder),
@@ -5445,6 +5448,7 @@ modest_ui_actions_on_msg_view_window_move_to (GtkAction *action,
                                                    TNY_FOLDER (dst_folder));
 
        /* Frees */
+       g_object_unref (src_folder);
        g_object_unref (header);
        g_object_unref (headers);
 }
@@ -5479,7 +5483,7 @@ modest_ui_actions_on_move_to (GtkAction *action,
        /* Create and run the dialog */
        dialog = create_move_to_dialog (GTK_WINDOW (win), folder_view, &tree_view);
        modest_folder_view_select_first_inbox_or_local (MODEST_FOLDER_VIEW (tree_view));
-       gtk_window_set_modal (GTK_WINDOW (dialog), TRUE);
+       modest_window_mgr_set_modal (modest_runtime_get_window_mgr (), GTK_WINDOW (dialog));
        result = gtk_dialog_run (GTK_DIALOG(dialog));
        g_object_ref (tree_view);
        gtk_widget_destroy (dialog);
@@ -6025,6 +6029,8 @@ modest_ui_actions_on_send_queue_status_changed (ModestTnySendQueue *send_queue,
        /* Rerun dimming rules, because the message could become deletable for example */
        modest_window_check_dimming_rules_group (MODEST_WINDOW (main_window), 
                                                 MODEST_DIMMING_RULES_TOOLBAR);
+       modest_window_check_dimming_rules_group (MODEST_WINDOW (main_window), 
+                                                MODEST_DIMMING_RULES_MENU);
        
        /* Free */
  frees: