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);
}
/* 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;
}
gtk_widget_set_sensitive(folderview->ctree, FALSE);
inc_lock();
main_window_cursor_wait(folderview->mainwin);
- if ((new_item = folder_item_move_to(src_item, item)) != NULL) {
+ 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);
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);