static GtkWidget *compose_create_header(Compose *compose)
{
- GtkWidget *label;
- GtkWidget *hbox;
GtkWidget *from_optmenu_hbox;
GtkWidget *header_scrolledwin;
GtkWidget *header_table;
count = 0;
/* option menu for selecting accounts */
- hbox = gtk_hbox_new(FALSE, 0);
- label = gtk_label_new(prefs_common.trans_hdr ? _("From:") : "From:");
- gtk_box_pack_end(GTK_BOX(hbox), label, FALSE, FALSE, 0);
- //gtk_table_attach(GTK_TABLE(header_table), hbox, 0, 1, count, count + 1,
- // GTK_FILL, 0, 2, 0);
from_optmenu_hbox = compose_account_option_menu_create(compose);
gtk_table_attach(GTK_TABLE(header_table), from_optmenu_hbox,
0, 2, count, count + 1, GTK_EXPAND | GTK_FILL, GTK_SHRINK, 0, 0);
(GNode *node, GHashTable *pptable);
static gboolean persist_prefs_free (gpointer key, gpointer val, gpointer data);
void folder_item_read_cache (FolderItem *item);
-void folder_item_free_cache (FolderItem *item);
+gboolean folder_item_free_cache (FolderItem *item, gboolean force);
gint folder_item_scan_full (FolderItem *item, gboolean filtering);
static void folder_item_update_with_msg (FolderItem *item, FolderItemUpdateFlags update_flags,
MsgInfo *msg);
}
if (item->cache)
- folder_item_free_cache(item);
+ folder_item_free_cache(item, TRUE);
if (item->prefs)
folder_item_prefs_free(item->prefs);
g_free(item->name);
difftime = (gint) (time(NULL) - msgcache_get_last_access_time(item->cache));
expiretime = prefs_common.cache_min_keep_time * 60;
debug_print("Cache unused time: %d (Expire time: %d)\n", difftime, expiretime);
+
if (difftime > expiretime && !item->opened && !item->processing_pending) {
*folder_item_list = g_slist_insert_sorted(*folder_item_list, item, folder_cache_time_compare_func);
}
}
-void folder_item_free_cache(FolderItem *item)
+gboolean folder_item_free_cache(FolderItem *item, gboolean force)
{
- g_return_if_fail(item != NULL);
+ g_return_val_if_fail(item != NULL, TRUE);
if (item->cache == NULL)
- return;
+ return TRUE;
- if (item->opened > 0)
- return;
+ if (item->opened > 0 && !force)
+ return FALSE;
folder_item_write_cache(item);
msgcache_destroy(item->cache);
item->cache = NULL;
+ return TRUE;
}
void folder_clean_cache_memory_force(void)
listitem = folder_item_list;
while((listitem != NULL) && (memusage > (prefs_common.cache_max_mem_usage * 1024))) {
FolderItem *item = (FolderItem *)(listitem->data);
+ gint cache_size = 0;
if (item == protected_item) {
listitem = listitem->next;
continue;
}
debug_print("Freeing cache memory for %s\n", item->path ? item->path : item->name);
- memusage -= msgcache_get_memory_usage(item->cache);
- folder_item_free_cache(item);
+ cache_size = msgcache_get_memory_usage(item->cache);
+ if (folder_item_free_cache(item, FALSE))
+ memusage -= cache_size;
+
listitem = listitem->next;
}
g_slist_free(folder_item_list);
result = folder->klass->remove_all_msg(folder, item);
if (result == 0) {
- folder_item_free_cache(item);
+ folder_item_free_cache(item, TRUE);
item->cache = msgcache_new();
}
} else {
color_style->fg[GTK_STATE_NORMAL] = gdk_color;
style = color_style;
} else if (use_color) {
- gtkut_convert_int_to_gdk_color(prefs_common.color_new, &gdk_color);
- bold_color_style = gtk_style_copy(bold_style);
- bold_color_style->fg[GTK_STATE_NORMAL] = gdk_color;
style = bold_color_style;
} else
style = bold_style;
} else if (use_color) {
GdkColor gdk_color;
- gtkut_convert_int_to_gdk_color(prefs_common.color_new, &gdk_color);
- style = gtk_style_copy(normal_color_style);
- style->fg[GTK_STATE_NORMAL] = gdk_color;
+ style = normal_color_style;
gtk_ctree_node_set_foreground(ctree, node,
&folderview->color_new);
} else if (item->op_count > 0) {