--- src/folderview.c 2005-05-09 05:04:27.000000000 -0700 +++ src/folderview_new.c 2005-05-11 21:12:15.000000000 -0700 @@ -67,12 +67,11 @@ typedef enum { COL_FOLDER = 0, - COL_NEW = 1, - COL_UNREAD = 2, - COL_TOTAL = 3 + COL_UNREAD = 1, + COL_TOTAL = 2 } FolderColumnPos; -#define N_FOLDER_COLS 4 +#define N_FOLDER_COLS 3 #define COL_FOLDER_WIDTH 150 #define COL_NUM_WIDTH 32 @@ -124,8 +123,6 @@ static GdkBitmap *queueopenxpmmask; static GdkPixmap *queueopenhrmxpm; static GdkBitmap *queueopenhrmxpmmask; -static GdkPixmap *newxpm; -static GdkBitmap *newxpmmask; static GdkPixmap *unreadxpm; static GdkBitmap *unreadxpmmask; static GdkPixmap *readxpm; @@ -223,7 +220,7 @@ GdkDragContext *drag_context, FolderView *folderview); -void folderview_create_folder_node (FolderView *folderview, +void folderview_create_folder_node (FolderView *folderview, FolderItem *item); gboolean folderview_update_folder (gpointer source, gpointer userdata); @@ -324,7 +321,6 @@ folderview = g_new0(FolderView, 1); titles[COL_FOLDER] = _("Folder"); - titles[COL_NEW] = _("New"); titles[COL_UNREAD] = _("Unread"); titles[COL_TOTAL] = _("#"); @@ -338,20 +334,16 @@ prefs_common.folderview_height); ctree = gtk_sctree_new_with_titles(N_FOLDER_COLS, COL_FOLDER, titles); - + gtk_container_add(GTK_CONTAINER(scrolledwin), ctree); gtk_clist_set_selection_mode(GTK_CLIST(ctree), GTK_SELECTION_BROWSE); - gtk_clist_set_column_justification(GTK_CLIST(ctree), COL_NEW, - GTK_JUSTIFY_RIGHT); gtk_clist_set_column_justification(GTK_CLIST(ctree), COL_UNREAD, GTK_JUSTIFY_RIGHT); gtk_clist_set_column_justification(GTK_CLIST(ctree), COL_TOTAL, GTK_JUSTIFY_RIGHT); gtk_clist_set_column_width(GTK_CLIST(ctree), COL_FOLDER, prefs_common.folder_col_folder); - gtk_clist_set_column_width(GTK_CLIST(ctree), COL_NEW, - prefs_common.folder_col_new); - gtk_clist_set_column_width(GTK_CLIST(ctree), COL_UNREAD, + gtk_clist_set_column_width(GTK_CLIST(ctree), COL_UNREAD, prefs_common.folder_col_unread); gtk_clist_set_column_width(GTK_CLIST(ctree), COL_TOTAL, prefs_common.folder_col_total); @@ -435,13 +427,11 @@ void folderview_init(FolderView *folderview) { GtkWidget *ctree = folderview->ctree; - GtkWidget *label_new; GtkWidget *label_unread; GtkWidget *label_total; - GtkWidget *hbox_new; GtkWidget *hbox_unread; GtkWidget *hbox_total; - + gtk_widget_realize(ctree); stock_pixmap_gdk(ctree, STOCK_PIXMAP_INBOX_CLOSE, &inboxxpm, &inboxxpmmask); stock_pixmap_gdk(ctree, STOCK_PIXMAP_INBOX_CLOSE_HRM, &inboxhrmxpm, &inboxhrmxpmmask); @@ -468,37 +458,29 @@ /* CLAWS: titles for "New" and "Unread" show new & unread pixmaps * instead text (text overflows making them unreadable and ugly) */ - stock_pixmap_gdk(ctree, STOCK_PIXMAP_NEW, - &newxpm, &newxpmmask); stock_pixmap_gdk(ctree, STOCK_PIXMAP_UNREAD, &unreadxpm, &unreadxpmmask); stock_pixmap_gdk(ctree, STOCK_PIXMAP_READ, &readxpm, &readxpmmask); - - label_new = gtk_pixmap_new(newxpm, newxpmmask); + label_unread = gtk_pixmap_new(unreadxpm, unreadxpmmask); label_total = gtk_pixmap_new(readxpm, readxpmmask); - hbox_new = gtk_hbox_new(FALSE, 4); hbox_unread = gtk_hbox_new(FALSE, 4); hbox_total = gtk_hbox_new(FALSE, 4); /* left justified */ - gtk_box_pack_start(GTK_BOX(hbox_new), label_new, TRUE, TRUE, 0); - gtk_misc_set_alignment (GTK_MISC (label_new), 1, 0.5); gtk_box_pack_start(GTK_BOX(hbox_unread), label_unread, TRUE, TRUE, 0); gtk_misc_set_alignment (GTK_MISC (label_unread), 1, 0.5); gtk_box_pack_start(GTK_BOX(hbox_total), label_total, TRUE, TRUE, 0); gtk_misc_set_alignment (GTK_MISC (label_total), 1, 0.5); - gtk_widget_show_all(hbox_new); gtk_widget_show_all(hbox_unread); gtk_widget_show_all(hbox_total); - gtk_clist_set_column_widget(GTK_CLIST(ctree),COL_NEW,hbox_new); gtk_clist_set_column_widget(GTK_CLIST(ctree),COL_UNREAD,hbox_unread); gtk_clist_set_column_widget(GTK_CLIST(ctree),COL_TOTAL,hbox_total); - + if (!normal_style) { PangoFontDescription *font_desc; normal_style = gtk_style_copy(gtk_widget_get_style(ctree)); @@ -673,18 +655,16 @@ GtkCTree *ctree = GTK_CTREE(folderview->ctree); static GtkCTreeNode *prev_row = NULL; FolderItem *item; - gint new, unread, total; - gchar *new_str, *unread_str, *total_str; + gint unread, total; + gchar *unread_str, *total_str; if (!row) return; item = gtk_ctree_node_get_row_data(ctree, row); if (!item) return; - gtk_ctree_node_get_text(ctree, row, COL_NEW, &new_str); gtk_ctree_node_get_text(ctree, row, COL_UNREAD, &unread_str); gtk_ctree_node_get_text(ctree, row, COL_TOTAL, &total_str); - new = atoi(new_str); unread = atoi(unread_str); total = atoi(total_str); @@ -706,7 +686,7 @@ GtkCTree *ctree = GTK_CTREE(folderview->ctree); GtkCTreeNode *node, *child; - node = gtk_ctree_find_by_row_data(ctree, NULL, + node = gtk_ctree_find_by_row_data(ctree, NULL, folder_item_parent(item)); if (node) { child = gtk_ctree_find_by_row_data(ctree, node, item); @@ -814,8 +794,8 @@ } /** folderview_check_new() - * Scan and update the folder and return the - * count the number of new messages since last check. + * Scan and update the folder and return the + * count the number of new messages since last check. * \param folder the folder to check for new messages * \return the number of new messages since last check */ @@ -864,7 +844,7 @@ } folder_write_list(); - /* Number of new messages since last check is the just the difference + /* Number of new messages since last check is the just the difference * between former_new_msgs and new_msgs. If new_msgs is less than * former_new_msgs, that would mean another session accessed the folder * and the result is not well defined. @@ -1160,12 +1140,12 @@ FALSE, GTK_CTREE_ROW(node)->expanded); g_free(str); } else if (((item->unread_msgs > 0 || add_unread_mark) && - prefs_common.display_folder_unread) + prefs_common.display_folder_unread) || add_sub_match_mark) { if (item->unread_msgs > 0) str = g_strdup_printf("%s (%d%s%s)", name, item->unread_msgs, - add_unread_mark || add_sub_match_mark ? "+" : "", + add_unread_mark || add_sub_match_mark ? "+" : "", item->unreadmarked_msgs > 0 ? "!":""); else str = g_strdup_printf("%s (+)", name); @@ -1174,9 +1154,9 @@ FALSE, GTK_CTREE_ROW(node)->expanded); g_free(str); } else { - str = g_strdup_printf("%s%s", name, + str = g_strdup_printf("%s%s", name, item->unreadmarked_msgs > 0 ? " (!)":""); - + gtk_ctree_set_node_info(ctree, node, str, FOLDER_SPACING, xpm, mask, openxpm, openmask, FALSE, GTK_CTREE_ROW(node)->expanded); @@ -1185,11 +1165,9 @@ g_free(name); if (!folder_item_parent(item)) { - gtk_ctree_node_set_text(ctree, node, COL_NEW, "-"); gtk_ctree_node_set_text(ctree, node, COL_UNREAD, "-"); gtk_ctree_node_set_text(ctree, node, COL_TOTAL, "-"); } else { - gtk_ctree_node_set_text(ctree, node, COL_NEW, itos(item->new_msgs)); gtk_ctree_node_set_text(ctree, node, COL_UNREAD, itos(item->unread_msgs)); gtk_ctree_node_set_text(ctree, node, COL_TOTAL, itos(item->total_msgs)); } @@ -1207,7 +1185,7 @@ use_color = (item->new_msgs > 0) || (add_unread_mark && - folderview_have_new_children(folderview, node)); + folderview_have_new_children(folderview, node)); } gtk_ctree_node_set_foreground(ctree, node, NULL); @@ -1316,7 +1294,7 @@ if ((update_info->update_flags & F_ITEM_UPDATE_CONTENT) && (folderview->opened == node)) summary_show(folderview->summaryview, update_info->item); } - + return FALSE; } @@ -1324,7 +1302,7 @@ gpointer data) { /* CLAWS: share this joy with other hook functions ... */ - folder_item_update((FolderItem *)key, + folder_item_update((FolderItem *)key, (FolderItemUpdateFlags)GPOINTER_TO_INT(data)); } @@ -1332,11 +1310,11 @@ { 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, + g_hash_table_foreach(table, folderview_update_item_foreach_func, GINT_TO_POINTER(flags)); } @@ -1508,12 +1486,12 @@ gtk_item_factory_delete_entry(fpopup_factory, &folder_view_trash_popup_entries[0]); gtk_item_factory_delete_entry(fpopup_factory, &folder_view_trash_popup_entries[1]); } - + #define SET_SENS(name, sens) \ menu_set_sensitive(fpopup_factory, name, sens) SET_SENS("/Mark all read", item->unread_msgs >= 1); - SET_SENS("/Search folder...", item->total_msgs >= 1 && + SET_SENS("/Search folder...", item->total_msgs >= 1 && folderview->selected == folderview->opened); SET_SENS("/Properties...", item->node->parent != NULL); SET_SENS("/Processing...", item->node->parent != NULL); @@ -1608,7 +1586,7 @@ /* We don't want to lose all caches if sylpheed crashed */ if (folderview->opened) { FolderItem *olditem; - + olditem = gtk_ctree_node_get_row_data(ctree, folderview->opened); if (olditem) { /* will be null if we just moved the previously opened folder */ @@ -1617,12 +1595,12 @@ } } - /* CLAWS: set compose button type: news folder items + /* CLAWS: set compose button type: news folder items * always have a news folder as parent */ - if (item->folder) + if (item->folder) toolbar_set_compose_button (folderview->mainwin->toolbar, - FOLDER_TYPE(item->folder) == F_NEWS ? + FOLDER_TYPE(item->folder) == F_NEWS ? COMPOSEBUTTON_NEWS : COMPOSEBUTTON_MAIL); if (item->path) @@ -1642,7 +1620,7 @@ } /* Open Folder */ - buf = g_strdup_printf(_("Opening Folder %s..."), item->path ? + buf = g_strdup_printf(_("Opening Folder %s..."), item->path ? item->path : "(null)"); debug_print("%s\n", buf); STATUSBAR_PUSH(folderview->mainwin, buf); @@ -1667,7 +1645,7 @@ /* Show messages */ summary_set_prefs_from_folderitem(folderview->summaryview, item); opened = summary_show(folderview->summaryview, item); - + folder_clean_cache_memory(); if (!opened) { @@ -1725,9 +1703,6 @@ case COL_FOLDER: prefs_common.folder_col_folder = width; break; - case COL_NEW: - prefs_common.folder_col_new = width; - break; case COL_UNREAD: prefs_common.folder_col_unread = width; break; @@ -1744,8 +1719,8 @@ GNode *srcnode; folderview_create_folder_node(folderview, item); - - srcnode = item->folder->node; + + srcnode = item->folder->node; srcnode = g_node_find(srcnode, G_PRE_ORDER, G_TRAVERSE_ALL, item); srcnode = srcnode->children; while (srcnode != NULL) { @@ -1762,7 +1737,7 @@ GtkCTree *ctree = GTK_CTREE(folderview->ctree); gchar *text[N_FOLDER_COLS] = {NULL, "0", "0", "0"}; GtkCTreeNode *node, *parent_node; - + parent_node = gtk_ctree_find_by_row_data(ctree, NULL, folder_item_parent(item)); if (parent_node == NULL) return; @@ -1792,25 +1767,25 @@ GSList *mlist = NULL; GSList *cur = NULL; if (!folderview->selected) return; - + item = gtk_ctree_node_get_row_data(ctree, folderview->selected); g_return_if_fail(item != NULL); g_return_if_fail(item->folder != NULL); if (item != item->folder->trash) return; - + if (prefs_common.ask_on_clean) { if (alertpanel(_("Empty trash"), _("Empty all messages in trash?"), _("Yes"), _("No"), NULL) != G_ALERTDEFAULT) return; } - + mlist = folder_item_get_msg_list(item); - + for (cur = mlist ; cur != NULL ; cur = cur->next) { MsgInfo * msginfo = (MsgInfo *) cur->data; /* is it partially received? (partial_recv isn't cached) */ - if (msginfo->total_size != 0 && + if (msginfo->total_size != 0 && msginfo->size != (off_t)msginfo->total_size) partial_mark_for_delete(msginfo); } @@ -1848,7 +1823,7 @@ GSList *list = NULL; GSList *done = NULL; GtkCTree *ctree = GTK_CTREE(folderview->ctree); - + for (list = folderview->nodes_to_recollapse; list != NULL; list = g_slist_next(list)) { if (!gtkut_ctree_node_is_parent(GTK_CTREE_NODE(list->data), node) && list->data != node) { @@ -1857,7 +1832,7 @@ } } for (list = done; list != NULL; list = g_slist_next(list)) { - folderview->nodes_to_recollapse = g_slist_remove(folderview->nodes_to_recollapse, + folderview->nodes_to_recollapse = g_slist_remove(folderview->nodes_to_recollapse, list->data); } g_slist_free(done); @@ -1896,12 +1871,12 @@ folder_item_update_thaw(); folder_item_update_recursive(new_folder, F_ITEM_UPDATE_MSGCNT); - folderview_sort_folders(folderview, - gtk_ctree_find_by_row_data(GTK_CTREE(folderview->ctree), + folderview_sort_folders(folderview, + gtk_ctree_find_by_row_data(GTK_CTREE(folderview->ctree), NULL, folder_item_parent(new_folder)), new_folder->folder); folderview_select(folderview, new_folder); } else { - statusbar_verbosity_set(FALSE); + statusbar_verbosity_set(FALSE); main_window_cursor_normal(folderview->mainwin); STATUSBAR_POP(folderview->mainwin); folder_item_update_thaw(); @@ -1919,8 +1894,8 @@ alertpanel_error(_("Move failed!")); break; } - } - inc_unlock(); + } + inc_unlock(); gtk_widget_set_sensitive(GTK_WIDGET(folderview->ctree), TRUE); } @@ -1954,7 +1929,7 @@ _("Processing configuration"), NULL, NULL); } -void folderview_set_target_folder_color(gint color_op) +void folderview_set_target_folder_color(gint color_op) { gint firstone = 1; GList *list; @@ -2008,12 +1983,12 @@ drag_state_stop(folderview); /* request expansion */ if (0 != (folderview->drag_timer = gtk_timeout_add - (prefs_common.hover_timeout, + (prefs_common.hover_timeout, (GtkFunction)folderview_defer_expand, folderview))) { folderview->drag_node = node; folderview->drag_item = item; - } + } } static void folderview_start_drag(GtkWidget *widget, gint button, GdkEvent *event, @@ -2023,7 +1998,7 @@ g_return_if_fail(folderview != NULL); if (folderview->selected == NULL) return; - if (folderview->nodes_to_recollapse) + if (folderview->nodes_to_recollapse) g_slist_free(folderview->nodes_to_recollapse); folderview->nodes_to_recollapse = NULL; context = gtk_drag_begin(widget, folderview->target_list, @@ -2045,7 +2020,7 @@ for (cur = GTK_CLIST(folderview->ctree)->selection; cur != NULL; cur = cur->next) { item = gtk_ctree_node_get_row_data - (GTK_CTREE(folderview->ctree), + (GTK_CTREE(folderview->ctree), GTK_CTREE_NODE(cur->data)); if (item) { source = g_strdup_printf ("FROM_OTHER_FOLDER%s", folder_item_get_identifier(item)); @@ -2065,7 +2040,7 @@ GtkWidget *ctree; hookdata = source; - folderview = (FolderView *) userdata; + folderview = (FolderView *) userdata; g_return_val_if_fail(hookdata != NULL, FALSE); g_return_val_if_fail(folderview != NULL, FALSE); @@ -2138,7 +2113,7 @@ if (acceptable || (src_item && src_item == item)) drag_state_start(folderview, node, item); - + if (acceptable) { g_signal_handlers_block_by_func (G_OBJECT(widget), @@ -2147,7 +2122,7 @@ g_signal_handlers_unblock_by_func (G_OBJECT(widget), G_CALLBACK(folderview_selected), folderview); - gdk_drag_status(context, + gdk_drag_status(context, (context->actions == GDK_ACTION_COPY ? GDK_ACTION_COPY : GDK_ACTION_MOVE) , time); } else { @@ -2190,7 +2165,7 @@ node = gtk_ctree_node_nth(GTK_CTREE(widget), row); item = gtk_ctree_node_get_row_data(GTK_CTREE(widget), node); src_item = folderview->summaryview->folder_item; - + /* re-check (due to acceptable possibly set for folder moves */ if (!(item && item->folder && item->path && src_item && src_item != item && FOLDER_CLASS(item->folder)->copy_msg != NULL)) { @@ -2216,12 +2191,12 @@ } else { /* comes from folderview */ char *source; - + source = data->data + 17; if (gtk_clist_get_selection_info (GTK_CLIST(widget), x - 24, y - 24, &row, &column) == 0 || *source == 0) { - gtk_drag_finish(drag_context, FALSE, FALSE, time); + gtk_drag_finish(drag_context, FALSE, FALSE, time); return; } node = gtk_ctree_node_nth(GTK_CTREE(widget), row); @@ -2229,7 +2204,7 @@ src_item = folder_find_item_from_identifier(source); if (!item || !src_item || src_item->stype != F_NORMAL) { - gtk_drag_finish(drag_context, FALSE, FALSE, time); + gtk_drag_finish(drag_context, FALSE, FALSE, time); return; } @@ -2239,7 +2214,7 @@ folderview->nodes_to_recollapse = NULL; } -static void folderview_drag_end_cb(GtkWidget *widget, +static void folderview_drag_end_cb(GtkWidget *widget, GdkDragContext *drag_context, FolderView *folderview) { @@ -2258,7 +2233,7 @@ factory = create_ifactory(folderview, fpopup); g_hash_table_insert(folderview->popups, fpopup->klass, factory); - } + } g_hash_table_insert(folderview_popups, fpopup->klass, fpopup); } @@ -2270,6 +2245,6 @@ FolderView *folderview = folderviews->data; g_hash_table_remove(folderview->popups, fpopup->klass); - } + } g_hash_table_remove(folderview_popups, fpopup->klass); }