X-Git-Url: http://git.maemo.org/git/?p=modest;a=blobdiff_plain;f=src%2Fmodest-ui-actions.c;h=736eeb01ac4451a6fe621b26c247750585b19aae;hp=ecb7d7519b18f9915b664e45f8a3f9f0c0a212b6;hb=85ea9236bffbc0205a4b6c1a7afa1ad440a47212;hpb=f02763acb7bc43c187a606714a1074bedafb7718 diff --git a/src/modest-ui-actions.c b/src/modest-ui-actions.c index ecb7d75..736eeb0 100644 --- a/src/modest-ui-actions.c +++ b/src/modest-ui-actions.c @@ -974,13 +974,12 @@ open_msg_banner_idle (gpointer userdata) gdk_threads_enter (); banner_info->idle_handler = 0; banner_info->banner = modest_platform_animation_banner (NULL, NULL, banner_info->message); - if (banner_info) + if (banner_info->banner) g_object_ref (banner_info->banner); - + gdk_threads_leave (); return FALSE; - } static GtkWidget * @@ -1358,7 +1357,7 @@ open_msg_performer(gboolean canceled, gpointer user_data) { ModestMailOperation *mail_op = NULL; - gchar *error_msg; + gchar *error_msg = NULL; ModestProtocolType proto; TnyConnectionStatus status; OpenMsgHelper *helper = NULL; @@ -1455,7 +1454,7 @@ open_msg_performer(gboolean canceled, mail_op = modest_mail_operation_new_with_error_handling ((GObject *) parent_window, modest_ui_actions_disk_operations_error_handler, - error_msg, g_free); + g_strdup (error_msg), g_free); modest_mail_operation_queue_add (modest_runtime_get_mail_operation_queue (), mail_op); @@ -1483,6 +1482,8 @@ open_msg_performer(gboolean canceled, /* Frees */ clean: + if (error_msg) + g_free (error_msg); if (mail_op) g_object_unref (mail_op); g_object_unref (account); @@ -3249,38 +3250,6 @@ modest_ui_actions_on_remove_attachments (GtkAction *action, modest_msg_edit_window_remove_attachments (window, NULL); } - -#ifndef MODEST_TOOLKIT_GTK -typedef struct { - guint handler; - gchar *name; - GtkWindow *win; - TnyFolderStore *folder; -} CreateFolderHelper; - -static gboolean -show_create_folder_in_timeout (gpointer data) -{ - CreateFolderHelper *helper = (CreateFolderHelper *) data; - - /* Remove the timeout ASAP, we can not wait until the dialog - is shown because it could take a lot of time and so the - timeout could be called twice or more times */ - g_source_remove (helper->handler); - - gdk_threads_enter (); - do_create_folder (helper->win, helper->folder, helper->name); - gdk_threads_leave (); - - g_object_unref (helper->win); - g_object_unref (helper->folder); - g_free (helper->name); - g_slice_free (CreateFolderHelper, helper); - - return FALSE; -} -#endif - static void do_create_folder_cb (ModestMailOperation *mail_op, TnyFolderStore *parent_folder, @@ -3289,8 +3258,10 @@ do_create_folder_cb (ModestMailOperation *mail_op, { gchar *suggested_name = (gchar *) user_data; GtkWindow *source_win = (GtkWindow *) modest_mail_operation_get_source (mail_op); + const GError *error; - if (modest_mail_operation_get_error (mail_op)) { + error = modest_mail_operation_get_error (mail_op); + if (error) { /* Show an error. If there was some problem writing to disk, show it, otherwise show the generic folder @@ -3302,24 +3273,10 @@ do_create_folder_cb (ModestMailOperation *mail_op, modest_ui_actions_disk_operations_error_handler (mail_op, _("mail_in_ui_folder_create_error")); - /* Try again. Do *NOT* show any error because the mail - operations system will do it for us because we - created the mail_op with new_with_error_handler */ -#ifndef MODEST_TOOLKIT_GTK - CreateFolderHelper *helper; - helper = g_slice_new0 (CreateFolderHelper); - helper->name = g_strdup (suggested_name); - helper->folder = g_object_ref (parent_folder); - helper->win = g_object_ref (source_win); - - /* Ugly but neccesary stuff. The problem is that the - dialog when is shown calls a function that destroys - all the temporary windows, so the banner is - destroyed */ - helper->handler = g_timeout_add (2000, show_create_folder_in_timeout, helper); -#else - do_create_folder (source_win, parent_folder, (const gchar *) suggested_name); -#endif + if (!is_memory_full_error ((GError *) error, mail_op)) { + /* Try again if there is no full memory condition */ + do_create_folder (source_win, parent_folder, (const gchar *) suggested_name); + } } else { /* the 'source_win' is either the ModestMainWindow, or the 'Move to folder'-dialog * FIXME: any other? */ @@ -6603,6 +6560,9 @@ modest_ui_actions_get_msg_already_deleted_error_msg (ModestWindow *win) folder = TNY_FOLDER_STORE (tny_header_get_folder (header)); } + if (!header || !folder) + goto frees; + /* Get the account type */ account = tny_folder_get_account (TNY_FOLDER (folder)); proto = modest_tny_account_get_protocol_type (account); @@ -6617,10 +6577,14 @@ modest_ui_actions_get_msg_already_deleted_error_msg (ModestWindow *win) msg = g_strdup_printf (_("mail_ni_ui_folder_get_msg_folder_error")); } + frees: /* Frees */ - g_object_unref (account); - g_object_unref (folder); - g_object_unref (header); + if (account) + g_object_unref (account); + if (folder) + g_object_unref (folder); + if (header) + g_object_unref (header); return msg; }