* Changes in the autotools stuff affecting a lot of platform dependent
[modest] / src / widgets / modest-folder-view.c
index 018c44d..8e21f2f 100644 (file)
@@ -402,6 +402,13 @@ text_cell_data  (GtkTreeViewColumn *column,
                                g_free (fname);
                                fname = g_strdup (modest_local_folder_info_get_type_display_name (type));
                        }
+               } else {
+                       /* Sometimes an special folder is reported by the server as
+                          NORMAL, like some versions of Dovecot */
+                       if (type == TNY_FOLDER_TYPE_NORMAL ||
+                           type == TNY_FOLDER_TYPE_UNKNOWN) {
+                               type = modest_tny_folder_guess_folder_type (TNY_FOLDER (instance));
+                       }
                }
 
                /* note: we cannot reliably get the counts from the tree model, we need
@@ -574,9 +581,8 @@ get_folder_icons (TnyFolderType type, GObject *instance)
 
        ThreePixbufs *retval = NULL;
 
-       /* MERGE is not needed anymore as the folder now has the correct type jschmid */
-       /* We include the MERGE type here because it's used to create
-          the local OUTBOX folder */
+       /* Sometimes an special folder is reported by the server as
+          NORMAL, like some versions of Dovecot */
        if (type == TNY_FOLDER_TYPE_NORMAL ||
            type == TNY_FOLDER_TYPE_UNKNOWN) {
                type = modest_tny_folder_guess_folder_type (TNY_FOLDER (instance));
@@ -707,8 +713,6 @@ icon_cell_data  (GtkTreeViewColumn *column,
        }
 
        free_pixbufs (pixbufs);
-
-       return;
 }
 
 static void
@@ -1813,6 +1817,12 @@ drag_and_drop_from_header_view (GtkTreeModel *source_model,
        }
        g_strfreev (uris);
 
+       /* This could happen ig we perform a d&d very quickly over the
+          same row that row could dissapear because message is
+          transferred */
+       if (!TNY_IS_FOLDER (src_folder))
+               goto cleanup;
+
        /* Get the target folder */
        gtk_tree_model_get_iter (dest_model, &dest_iter, dest_row);
        gtk_tree_model_get (dest_model, &dest_iter,
@@ -2005,6 +2015,18 @@ drag_and_drop_from_folder_view (GtkTreeModel     *source_model,
 
        /* Check if the drag is possible */
        if (forbidden || !gtk_tree_path_compare (helper->source_row, dest_row)) {
+               /* Show error */
+               modest_platform_run_information_dialog ((GtkWindow *) win, 
+                                                       _("mail_in_ui_folder_move_target_error"), 
+                                                       FALSE);
+               /* Restore the previous selection */
+               folder = tree_path_to_folder (source_model, helper->source_row);
+               if (folder) {
+                       if (TNY_IS_FOLDER (folder))
+                               modest_folder_view_select_folder (helper->folder_view, 
+                                                                 TNY_FOLDER (folder), FALSE);
+                       g_object_unref (folder);
+               }
                dnd_helper_destroyer (helper);
                return;
        }