g_return_if_fail (MODEST_IS_MAIL_OPERATION (self));
g_return_if_fail (TNY_IS_FOLDER (folder));
- g_return_if_fail (TNY_IS_FOLDER (parent));
priv = MODEST_MAIL_OPERATION_GET_PRIVATE (self);
/* Get folder rules */
rules = modest_tny_folder_get_rules (TNY_FOLDER (folder));
- parent_rules = modest_tny_folder_get_rules (TNY_FOLDER (parent));
-
- if (!TNY_IS_FOLDER_STORE (parent)) {
-
- }
+ if (TNY_IS_FOLDER (parent))
+ parent_rules = modest_tny_folder_get_rules (TNY_FOLDER (parent));
/* The moveable restriction is applied also to copy operation */
if ((!TNY_IS_FOLDER_STORE (parent)) || (rules & MODEST_FOLDER_RULES_FOLDER_NON_MOVEABLE)) {
/* Notify the queue */
modest_mail_operation_notify_end (self, FALSE);
- } else if (parent_rules & MODEST_FOLDER_RULES_FOLDER_NON_WRITEABLE) {
+ } else if (TNY_IS_FOLDER (parent) &&
+ (parent_rules & MODEST_FOLDER_RULES_FOLDER_NON_WRITEABLE)) {
/* Set status failed and set an error */
priv->status = MODEST_MAIL_OPERATION_STATUS_FAILED;
g_set_error (&(priv->error), MODEST_MAIL_OPERATION_ERROR,
folder_store = modest_folder_view_get_selected (MODEST_FOLDER_VIEW (tree_view));
- if (TNY_IS_ACCOUNT (folder_store))
+ if (TNY_IS_ACCOUNT (folder_store) &&
+ !MODEST_IS_TNY_LOCAL_FOLDERS_ACCOUNT (folder_store))
goto end;
/* Get folder or messages to transfer */
TNY_GTK_FOLDER_STORE_TREE_MODEL_INSTANCE_COLUMN, &folder2,
-1);
+ /* Return if we get no folder. This could happen when folder
+ operations are happening. The model is updated after the
+ folder copy/move actually occurs, so there could be
+ situations where the model to be drawn is not correct */
+ if (!folder1 || !folder2)
+ return 0;
+
if (type == TNY_FOLDER_TYPE_ROOT) {
/* Compare the types, so that
* Remote accounts -> Local account -> MMC account .*/