if (response == GTK_RESPONSE_OK) {
- ModestWindow *main_window = NULL;
ModestWindowMgr *mgr = NULL;
GtkTreeModel *model = NULL;
GtkTreeSelection *sel = NULL;
}
/* Disable window dimming management */
- modest_window_disable_dimming (MODEST_WINDOW(win));
+ modest_window_disable_dimming (win);
/* Remove each header. If it's a view window header_view == NULL */
mail_op = modest_mail_operation_new ((GObject *) win);
if (sel != NULL) {
gtk_tree_selection_unselect_all (sel);
}
- modest_window_enable_dimming (MODEST_WINDOW(win));
+ modest_window_enable_dimming (win);
if (MODEST_IS_MSG_VIEW_WINDOW (win)) {
modest_ui_actions_refresh_message_window_after_delete (MODEST_MSG_VIEW_WINDOW (win));
/* Get main window */
mgr = modest_runtime_get_window_mgr ();
- main_window = modest_window_mgr_get_main_window (mgr, FALSE); /* don't create */
} else if (MODEST_IS_MAIN_WINDOW (win)) {
- /* Move cursor to next row */
- main_window = win;
-
/* Select next or previous row */
if (gtk_tree_row_reference_valid (next_row_reference)) {
gtk_tree_selection_select_path (sel, next_path);
}
/* Update toolbar dimming state */
- if (main_window) {
- modest_ui_actions_check_menu_dimming_rules (MODEST_WINDOW (main_window));
- modest_ui_actions_check_toolbar_dimming_rules (MODEST_WINDOW (main_window));
- }
+ modest_ui_actions_check_menu_dimming_rules (win);
+ modest_ui_actions_check_toolbar_dimming_rules (win);
/* Free */
g_list_foreach (sel_list, (GFunc) gtk_tree_path_free, NULL);
if (expected_size > MODEST_MAX_ATTACHMENT_SIZE) {
modest_platform_run_information_dialog (
GTK_WINDOW(win),
- _FM("sfil_ib_opening_not_allowed"),
+ _("mail_ib_error_attachment_size"),
TRUE);
return;
}
typedef struct {
GtkTreeModel *model;
TnyHeader *header;
+ ModestWindow *caller_window;
OpenMsgBannerInfo *banner_info;
GtkTreeRowReference *rowref;
} OpenMsgHelper;
}
static void
+caller_win_destroyed (OpenMsgHelper *helper, GObject *object)
+{
+ if (helper->caller_window)
+ helper->caller_window = NULL;
+}
+
+static void
open_msg_helper_destroyer (gpointer user_data)
{
OpenMsgHelper *helper = (OpenMsgHelper *) user_data;
+ if (helper->caller_window) {
+ g_object_weak_unref ((GObject *) helper->caller_window, (GWeakNotify) caller_win_destroyed, helper);
+ helper->caller_window = NULL;
+ }
+
if (helper->banner_info) {
g_free (helper->banner_info->message);
if (helper->banner_info->idle_handler > 0) {
helper = (OpenMsgHelper *) user_data;
status = tny_account_get_connection_status (account);
- if (err || canceled) {
+ if (err || canceled || helper->caller_window == NULL) {
modest_window_mgr_unregister_header (modest_runtime_get_window_mgr (), helper->header);
/* Free the helper */
open_msg_helper_destroyer (helper);
(the user could switch between folders) */
helper = g_slice_new (OpenMsgHelper);
helper->model = g_object_ref (gtk_tree_view_get_model (GTK_TREE_VIEW (header_view)));
+ helper->caller_window = win;
+ g_object_weak_ref ((GObject *) helper->caller_window, (GWeakNotify) caller_win_destroyed, helper);
helper->header = g_object_ref (header);
helper->rowref = gtk_tree_row_reference_copy (rowref);
helper->banner_info = NULL;
/* Create reply mail */
switch (rf_helper->action) {
+ /* Use the msg_header to ensure that we have all the
+ information. The summary can lack some data */
+ TnyHeader *msg_header;
case ACTION_REPLY:
+ msg_header = tny_msg_get_header (msg);
new_msg =
- modest_tny_msg_create_reply_msg (msg, header, from,
+ modest_tny_msg_create_reply_msg (msg, msg_header, from,
(use_signature) ? signature : NULL,
rf_helper->reply_forward_type,
MODEST_TNY_MSG_REPLY_MODE_SENDER);
+ g_object_unref (msg_header);
break;
case ACTION_REPLY_TO_ALL:
+ msg_header = tny_msg_get_header (msg);
new_msg =
- modest_tny_msg_create_reply_msg (msg, header, from,
+ modest_tny_msg_create_reply_msg (msg, msg_header, from,
(use_signature) ? signature : NULL,
rf_helper->reply_forward_type,
MODEST_TNY_MSG_REPLY_MODE_ALL);
edit_type = MODEST_EDIT_TYPE_REPLY;
+ g_object_unref (msg_header);
break;
case ACTION_FORWARD:
new_msg =
if (!acc_name)
acc_name = modest_account_mgr_get_default_account (modest_runtime_get_account_mgr());
if (!acc_name) {
- g_printerr ("modest: cannot get default account\n");
+ modest_platform_information_banner (NULL, NULL, _("emev_ni_internal_error"));
return;
}
} else {
acc_store = modest_runtime_get_account_store ();
account = modest_tny_account_store_get_server_account (acc_store, acc_name, TNY_ACCOUNT_TYPE_STORE);
+ if (!account) {
+ g_free (acc_name);
+ modest_platform_information_banner (NULL, NULL, _("emev_ni_internal_error"));
+ return;
+ }
+
/* Do not automatically refresh accounts that are flagged as
NO_AUTO_UPDATE. This could be useful for accounts that
handle their own update times */
if (expected_size > MODEST_MAX_ATTACHMENT_SIZE) {
modest_platform_run_information_dialog (
GTK_WINDOW(edit_window),
- _FM("sfil_ib_opening_not_allowed"),
+ _("mail_ib_error_attachment_size"),
TRUE);
return FALSE;
}
{
GObject *win = NULL;
const GError *error;
- TnyAccount *account;
+ TnyAccount *account = NULL;
#ifndef MODEST_TOOLKIT_HILDON2
ModestWindow *main_window = NULL;
#endif
win = modest_mail_operation_get_source (mail_op);
error = modest_mail_operation_get_error (mail_op);
- account = modest_mail_operation_get_account (mail_op);
+
+ if (TNY_IS_FOLDER (user_data))
+ account = modest_tny_folder_get_account (TNY_FOLDER (user_data));
+ else if (TNY_IS_ACCOUNT (user_data))
+ account = g_object_ref (user_data);
/* If it's not a disk full error then show a generic error */
if (!modest_tny_account_store_check_disk_full_error (modest_runtime_get_account_store(),
mail_op =
modest_mail_operation_new_with_error_handling (G_OBJECT(parent_window),
- modest_ui_actions_move_folder_error_handler,
- info->src_folder, NULL);
+ modest_ui_actions_move_folder_error_handler,
+ g_object_ref (info->dst_folder), g_object_unref);
modest_mail_operation_queue_add (modest_runtime_get_mail_operation_queue (),
- mail_op);
-
- /* Select *after* the changes */
- /* TODO: this function hangs UI after transfer */
- /* modest_folder_view_select_folder (MODEST_FOLDER_VIEW(folder_view), */
- /* TNY_FOLDER (src_folder), TRUE); */
+ mail_op);
if (MODEST_IS_MAIN_WINDOW (parent_window)) {
modest_folder_view_select_folder (MODEST_FOLDER_VIEW(info->folder_view),