static gboolean can_select = TRUE; /* exclusive lock */
gboolean opened;
FolderItem *item;
+ gchar *buf;
folderview->selected = row;
olditem = gtk_ctree_node_get_row_data(ctree, folderview->opened);
if (olditem) {
/* will be null if we just moved the previously opened folder */
- folder_item_write_cache(olditem);
summary_save_prefs_to_folderitem(folderview->summaryview, olditem);
+ folder_item_close(olditem);
}
}
gdk_pointer_ungrab(GDK_CURRENT_TIME);
}
- if(((item->folder->type == F_IMAP) && !item->no_select) || (item->folder->type == F_NEWS)) {
- folder_item_scan(item);
- }
+ /* Open Folder */
+ buf = g_strdup_printf(_("Opening Folder %s..."), item->path);
+ debug_print("%s\n", buf);
+ STATUSBAR_PUSH(folderview->mainwin, buf);
+ g_free(buf);
- /* Processing */
- if(item->prefs->processing != NULL) {
- gchar *buf;
-
- buf = g_strdup_printf(_("Processing (%s)..."), item->path);
- debug_print("%s\n", buf);
- STATUSBAR_PUSH(folderview->mainwin, buf);
- g_free(buf);
-
- main_window_cursor_wait(folderview->mainwin);
-
- folder_item_apply_processing(item);
+ main_window_cursor_wait(folderview->mainwin);
- debug_print("done.\n");
- STATUSBAR_POP(folderview->mainwin);
+ if (folder_item_open(item) != 0) {
main_window_cursor_normal(folderview->mainwin);
- }
-
+ STATUSBAR_POP(folderview->mainwin);
+
+ alertpanel_error(_("Folder could not be opened."));
+
+ return;
+ }
+
+ main_window_cursor_normal(folderview->mainwin);
+
/* Show messages */
summary_set_prefs_from_folderitem(folderview->summaryview, item);
opened = summary_show(folderview->summaryview, item);
gtk_ctree_node_moveto(ctree, row, -1, 0.5, 0);
}
+ STATUSBAR_POP(folderview->mainwin);
+
folderview->open_folder = FALSE;
can_select = TRUE;
}
/* comes from folderview */
char *source;
char *buf;
+ gint status;
GtkCTreeNode *src_node;
FolderItem *new_item, *src_parent;
item = gtk_ctree_node_get_row_data(GTK_CTREE(widget), node);
src_item = folder_find_item_from_path(source);
- if (!src_item || src_item->stype != F_NORMAL) {
+ if (!item || !src_item || src_item->stype != F_NORMAL) {
gtk_drag_finish(drag_context, FALSE, FALSE, time);
return;
}
buf = g_strdup_printf(_("Moving %s to %s..."), src_item->name, item->name);
STATUSBAR_PUSH(folderview->mainwin, buf);
g_free(buf);
- main_window_cursor_wait(folderview->mainwin);
+ summary_clear_all(folderview->summaryview);
+ folderview->opened = NULL;
+ folderview->selected = NULL;
gtk_widget_set_sensitive(folderview->ctree, FALSE);
inc_lock();
- if ((new_item = folder_item_move_to(src_item, item)) != NULL) {
+ main_window_cursor_wait(folderview->mainwin);
+ if ((status = folder_item_move_to(src_item, item, &new_item)) == F_MOVE_OK) {
+ main_window_cursor_normal(folderview->mainwin);
gtk_drag_finish(drag_context, TRUE, TRUE, time);
if (src_node)
else
debug_print("can't remove src node: is null\n");
+ STATUSBAR_POP(folderview->mainwin);
folderview_create_folder_node_recursive(folderview, new_item);
folder_update_item(src_parent, TRUE);
- folder_update_item_recursive(new_item, TRUE);
+ folder_update_item_recursive(new_item, TRUE);
folderview_sort_folders(folderview,
gtk_ctree_find_by_row_data(GTK_CTREE(widget),
NULL, new_item->parent), new_item->folder);
- STATUSBAR_PUSH(folderview->mainwin, _("Done."));
- main_window_cursor_normal(folderview->mainwin);
- summary_clear_all(folderview->summaryview);
- folderview->opened = NULL;
- folderview->selected = NULL;
folderview_select(folderview, new_item);
} else {
- gtk_drag_finish(drag_context, FALSE, FALSE, time);
- STATUSBAR_PUSH(folderview->mainwin, _("Done."));
main_window_cursor_normal(folderview->mainwin);
+ gtk_drag_finish(drag_context, FALSE, FALSE, time);
+ STATUSBAR_POP(folderview->mainwin);
+ switch (status) {
+ case F_MOVE_FAILED_DEST_IS_PARENT:
+ alertpanel_error(_("Source and destination are the same."));
+ break;
+ case F_MOVE_FAILED_DEST_IS_CHILD:
+ alertpanel_error(_("Can't move a folder to one of its children."));
+ break;
+ default:
+ alertpanel_error(_("Move failed!"));
+ break;
+ }
}
inc_unlock();
gtk_widget_set_sensitive(folderview->ctree, TRUE);