FolderItem *item);
gboolean folderview_update_folder (gpointer source,
gpointer userdata);
-gboolean folderview_update_item (gpointer source,
+gboolean folderview_update_item_claws (gpointer source,
gpointer data);
-
static void folderview_processing_cb(FolderView *folderview, guint action,
GtkWidget *widget);
static void folderview_move_to(FolderView *folderview, FolderItem *from_folder,
folderview->folder_update_callback_id =
hooks_register_hook(FOLDER_UPDATE_HOOKLIST, folderview_update_folder, (gpointer) folderview);
folderview->folder_item_update_callback_id =
- hooks_register_hook(FOLDER_ITEM_UPDATE_HOOKLIST, folderview_update_item, (gpointer) folderview);
+ hooks_register_hook(FOLDER_ITEM_UPDATE_HOOKLIST, folderview_update_item_claws, (gpointer) folderview);
gtk_widget_show_all(scrolledwin);
folderview_update_node(folderview, node);
}
-gboolean folderview_update_item(gpointer source, gpointer data)
+#if !CLAWS /* keep it here for syncs */
+void folderview_update_item(FolderItem *item, gboolean update_summary)
+{
+ GList *list;
+ FolderView *folderview;
+ GtkCTree *ctree;
+ GtkCTreeNode *node;
+
+ g_return_if_fail(item != NULL);
+
+ for (list = folderview_list; list != NULL; list = list->next) {
+ folderview = (FolderView *)list->data;
+ ctree = GTK_CTREE(folderview->ctree);
+
+ node = gtk_ctree_find_by_row_data(ctree, NULL, item);
+ if (node) {
+ folderview_update_node(folderview, node);
+ if (update_summary && folderview->opened == node)
+ summary_show(folderview->summaryview,
+ item, FALSE);
+ }
+ }
+}
+#endif
+
+gboolean folderview_update_item_claws(gpointer source, gpointer data)
{
FolderItemUpdateData *update_info = (FolderItemUpdateData *)source;
FolderView *folderview = (FolderView *)data;
return FALSE;
}
+static void folderview_update_item_foreach_func(gpointer key, gpointer val,
+ gpointer data)
+{
+ /* CLAWS: share this joy with other hook functions ... */
+ folder_item_update((FolderItem *)key,
+ (FolderItemUpdateFlags)GPOINTER_TO_INT(data));
+}
+
+void folderview_update_item_foreach(GHashTable *table, gboolean update_summary)
+{
+ GList *list;
+ FolderItemUpdateFlags flags;
+
+ flags = update_summary ? F_ITEM_UPDATE_CONTENT | F_ITEM_UPDATE_MSGCNT
+ : 0;
+ for (list = folderview_list; list != NULL; list = list->next)
+ g_hash_table_foreach(table, folderview_update_item_foreach_func,
+ GINT_TO_POINTER(flags));
+}
+
static gboolean folderview_gnode_func(GtkCTree *ctree, guint depth,
GNode *gnode, GtkCTreeNode *cnode,
gpointer data)
}
Xstrdup_a(old_path, item->path, {g_free(new_folder); return;});
- old_id = folder_item_get_identifier(item);
if (item->folder->klass->rename_folder(item->folder, item, new_folder) < 0) {
- g_free(old_id);
+ alertpanel_error(_("The folder could not be renamed.\n"
+ "The new folder name could not be allowed."));
return;
}
+ old_id = folder_item_get_identifier(item);
/* if (FOLDER_TYPE(item->folder) == F_MH)
prefs_filtering_rename_path(old_path, item->path); */
new_id = folder_item_get_identifier(item);
}
gtk_clist_thaw(GTK_CLIST(ctree));
-
+
+ folder_item_prefs_save_config(item);
folder_write_list();
}
g_slist_free(folderview->nodes_to_recollapse);
folderview->nodes_to_recollapse = NULL;
}
+
+FolderItem *folderview_get_selected(FolderView *folderview)
+{
+ return (FolderItem *) gtk_ctree_node_get_row_data(folderview->ctree, folderview->opened);
+}