commit 8168ea7cef941c9f497a1ec6ce6300ad5dad3d74 from: Oliver Lowe date: Thu Nov 20 03:36:58 2025 UTC Remove dead folder prefs persistence commit - 90985bcf8a9ca17e826250929e02175e107e92a5 commit + 8168ea7cef941c9f497a1ec6ce6300ad5dad3d74 blob - 62e26489370dd569f2604514634f26ffa353ecde blob + eb47fdfe16995f5d68a7f002a048695cadd735ea --- src/folder.c +++ src/folder.c @@ -74,17 +74,10 @@ static GNode *folder_get_xml_node (Folder *folder); static Folder *folder_get_from_xml (GNode *node); static void folder_update_op_count_rec (GNode *node); - -static void folder_get_persist_prefs_recursive - (GNode *node, GHashTable *pptable); -static gboolean persist_prefs_free (gpointer key, gpointer val, gpointer data); static void folder_item_read_cache (FolderItem *item); gint folder_item_scan_full (FolderItem *item, gboolean filtering); static void folder_item_update_with_msg (FolderItem *item, FolderItemUpdateFlags update_flags, MsgInfo *msg); -static GHashTable *folder_persist_prefs_new (Folder *folder); -static void folder_persist_prefs_free (GHashTable *pptable); -static void folder_item_restore_persist_prefs (FolderItem *item, GHashTable *pptable); void folder_system_init(void) { @@ -903,38 +896,14 @@ void folder_write_list(void) xml_free_tree(rootnode); } -static gboolean folder_scan_tree_func(GNode *node, gpointer data) -{ - GHashTable *pptable = (GHashTable *)data; - FolderItem *item = (FolderItem *)node->data; - - folder_item_restore_persist_prefs(item, pptable); - folder_item_scan_full(item, FALSE); - - return FALSE; -} - -static gboolean folder_restore_prefs_func(GNode *node, gpointer data) -{ - GHashTable *pptable = (GHashTable *)data; - FolderItem *item = (FolderItem *)node->data; - - folder_item_restore_persist_prefs(item, pptable); - - return FALSE; -} - void folder_scan_tree(Folder *folder, gboolean rebuild) { - GHashTable *pptable; FolderUpdateData hookdata; Folder *old_folder = folder; if (!folder->klass->scan_tree) return; - pptable = folder_persist_prefs_new(folder); - if (rebuild) folder_remove(folder); @@ -951,13 +920,6 @@ void folder_scan_tree(Folder *folder, gboolean rebuild hookdata.item2 = NULL; hooks_invoke(FOLDER_UPDATE_HOOKLIST, &hookdata); - if (rebuild) - g_node_traverse(folder->node, G_POST_ORDER, G_TRAVERSE_ALL, -1, folder_scan_tree_func, pptable); - else - g_node_traverse(folder->node, G_POST_ORDER, G_TRAVERSE_ALL, -1, folder_restore_prefs_func, pptable); - - folder_persist_prefs_free(pptable); - folder_write_list(); } @@ -4158,106 +4120,6 @@ FolderItem *folder_get_default_processing(int account_ return folder_create_processing_folder(account_id); } -/* folder_persist_prefs_new() - return hash table with persistent - * settings (and folder name as key). - * (note that in claws other options are in the folder_item_prefs_RC - * file, so those don't need to be included in PersistPref yet) - */ -static GHashTable *folder_persist_prefs_new(Folder *folder) -{ - GHashTable *pptable; - - cm_return_val_if_fail(folder, NULL); - pptable = g_hash_table_new(g_str_hash, g_str_equal); - folder_get_persist_prefs_recursive(folder->node, pptable); - return pptable; -} - -static void folder_persist_prefs_free(GHashTable *pptable) -{ - cm_return_if_fail(pptable); - g_hash_table_foreach_remove(pptable, persist_prefs_free, NULL); - g_hash_table_destroy(pptable); -} - -static const PersistPrefs *folder_get_persist_prefs(GHashTable *pptable, const char *name) -{ - if (pptable == NULL || name == NULL) return NULL; - return g_hash_table_lookup(pptable, name); -} - -static void folder_item_restore_persist_prefs(FolderItem *item, GHashTable *pptable) -{ - const PersistPrefs *pp; - gchar *id = folder_item_get_identifier(item); - - pp = folder_get_persist_prefs(pptable, id); - g_free(id); - - if (!pp) return; - - /* CLAWS: since not all folder properties have been migrated to - * folderlist.xml, we need to call the old stuff first before - * setting things that apply both to Main and Claws. */ - folder_item_prefs_read_config(item); - - item->collapsed = pp->collapsed; - item->thread_collapsed = pp->thread_collapsed; - item->threaded = pp->threaded; - item->hide_read_msgs = pp->hide_read_msgs; - item->hide_del_msgs = pp->hide_del_msgs; - item->hide_read_threads = pp->hide_read_threads; - item->sort_key = pp->sort_key; - item->sort_type = pp->sort_type; -} - -static void folder_get_persist_prefs_recursive(GNode *node, GHashTable *pptable) -{ - FolderItem *item = FOLDER_ITEM(node->data); - PersistPrefs *pp; - GNode *child, *cur; - gchar *id; - - cm_return_if_fail(node != NULL); - cm_return_if_fail(item != NULL); - - /* NOTE: item->path == NULL means top level folder; not interesting - * to store preferences of that one. */ - if (item->path) { - id = folder_item_get_identifier(item); - pp = g_new0(PersistPrefs, 1); - if (!pp) { - g_free(id); - return; - } - pp->collapsed = item->collapsed; - pp->thread_collapsed = item->thread_collapsed; - pp->threaded = item->threaded; - pp->hide_read_msgs = item->hide_read_msgs; - pp->hide_del_msgs = item->hide_del_msgs; - pp->hide_read_threads = item->hide_read_threads; - pp->sort_key = item->sort_key; - pp->sort_type = item->sort_type; - g_hash_table_insert(pptable, id, pp); - } - - if (node->children) { - child = node->children; - while (child) { - cur = child; - child = cur->next; - folder_get_persist_prefs_recursive(cur, pptable); - } - } -} - -static gboolean persist_prefs_free(gpointer key, gpointer val, gpointer data) -{ - g_free(key); - g_free(val); - return TRUE; -} - /* * functions for handling FolderItem content changes */ blob - 9648e6aa02201275fa3963600b64234fac95cf50 blob + c60676b5767cf49caf27c65a10038fad134095a0 --- src/folder.h +++ src/folder.h @@ -31,7 +31,6 @@ typedef struct _FolderClass FolderClass; typedef struct _FolderItem FolderItem; typedef struct _FolderUpdateData FolderUpdateData; typedef struct _FolderItemUpdateData FolderItemUpdateData; -typedef struct _PersistPrefs PersistPrefs; #define FOLDER(obj) ((Folder *)obj) #define FOLDER_CLASS(obj) (FOLDER(obj)->klass) @@ -724,18 +723,6 @@ struct _FolderItem guint last_seen; }; -struct _PersistPrefs -{ - FolderSortKey sort_key; - FolderSortType sort_type; - guint collapsed : 1; - guint thread_collapsed : 1; - guint threaded : 1; - guint hide_read_msgs : 1; /* CLAWS */ - guint hide_del_msgs : 1; /* CLAWS */ - guint hide_read_threads : 1; -}; - struct _FolderUpdateData { Folder *folder;