gpointer user_data)
{
ModestMailOperation *mail_op = NULL;
- gchar *error_msg;
+ gchar *error_msg = NULL;
ModestProtocolType proto;
TnyConnectionStatus status;
OpenMsgHelper *helper = NULL;
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);
/* Frees */
clean:
+ if (error_msg)
+ g_free (error_msg);
if (mail_op)
g_object_unref (mail_op);
g_object_unref (account);
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,
{
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
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? */
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);
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;
}