gint width,
FolderView *folderview);
+static void mark_all_read_handler (GtkAction *action,
+ gpointer data,
+ gboolean recursive);
+
static void mark_all_read_cb (GtkAction *action,
gpointer data);
+static void mark_all_read_recursive_cb (GtkAction *action,
+ gpointer data);
static void folderview_empty_trash_cb (GtkAction *action,
gpointer data);
{
{"FolderViewPopup", NULL, "FolderViewPopup" },
{"FolderViewPopup/MarkAllRead", NULL, N_("Mark all re_ad"), NULL, NULL, G_CALLBACK(mark_all_read_cb) },
+ {"FolderViewPopup/MarkAllReadRec", NULL, N_("Mark all read recursi_vely"), NULL, NULL, G_CALLBACK(mark_all_read_recursive_cb) },
{"FolderViewPopup/---", NULL, "---" },
{"FolderViewPopup/RunProcessing", NULL, N_("R_un processing rules"), NULL, NULL, G_CALLBACK(folderview_run_processing_cb) },
{"FolderViewPopup/SearchFolder", NULL, N_("_Search folder..."), NULL, NULL, G_CALLBACK(folderview_search_cb) },
/* CLAWS: titles for "New" and "Unread" show new & unread pixmaps
* instead text (text overflows making them unreadable and ugly) */
- stock_pixbuf_gdk(ctree, STOCK_PIXMAP_NEW,
- &newxpm);
- stock_pixbuf_gdk(ctree, STOCK_PIXMAP_UNREAD,
- &unreadxpm);
- stock_pixbuf_gdk(ctree, STOCK_PIXMAP_READ,
- &readxpm);
+ stock_pixbuf_gdk(STOCK_PIXMAP_NEW, &newxpm);
+ stock_pixbuf_gdk(STOCK_PIXMAP_UNREAD, &unreadxpm);
+ stock_pixbuf_gdk(STOCK_PIXMAP_READ, &readxpm);
label_folder = gtk_label_new(_("Folder"));
label_new = gtk_image_new_from_pixbuf(newxpm);
}
if (folderview->selected)
- sel_item = gtk_cmctree_node_get_row_data(GTK_CMCTREE(ctree), folderview->selected);
+ sel_item = folderview_get_selected_item(folderview);
if (folderview->opened)
- op_item = gtk_cmctree_node_get_row_data(GTK_CMCTREE(ctree), folderview->opened);
+ op_item = folderview_get_opened_item(folderview);
debug_print("recreating tree...\n");
gtk_widget_destroy(folderview->ctree);
GdkColor gdk_color;
PangoFontDescription *normal_font;
- stock_pixbuf_gdk(ctree, STOCK_PIXMAP_INBOX_CLOSE, &inboxxpm);
- stock_pixbuf_gdk(ctree, STOCK_PIXMAP_INBOX_CLOSE_HRM, &inboxhrmxpm);
- stock_pixbuf_gdk(ctree, STOCK_PIXMAP_INBOX_OPEN, &inboxopenxpm);
- stock_pixbuf_gdk(ctree, STOCK_PIXMAP_INBOX_OPEN_HRM, &inboxopenhrmxpm);
- stock_pixbuf_gdk(ctree, STOCK_PIXMAP_OUTBOX_CLOSE, &outboxxpm);
- stock_pixbuf_gdk(ctree, STOCK_PIXMAP_OUTBOX_CLOSE_HRM, &outboxhrmxpm);
- stock_pixbuf_gdk(ctree, STOCK_PIXMAP_OUTBOX_OPEN, &outboxopenxpm);
- stock_pixbuf_gdk(ctree, STOCK_PIXMAP_OUTBOX_OPEN_HRM, &outboxopenhrmxpm);
- stock_pixbuf_gdk(ctree, STOCK_PIXMAP_DIR_CLOSE, &folderxpm);
- stock_pixbuf_gdk(ctree, STOCK_PIXMAP_DIR_CLOSE_HRM, &folderhrmxpm);
- stock_pixbuf_gdk(ctree, STOCK_PIXMAP_DIR_OPEN, &folderopenxpm);
- stock_pixbuf_gdk(ctree, STOCK_PIXMAP_DIR_OPEN_HRM, &folderopenhrmxpm);
- stock_pixbuf_gdk(ctree, STOCK_PIXMAP_TRASH_OPEN, &trashopenxpm);
- stock_pixbuf_gdk(ctree, STOCK_PIXMAP_TRASH_OPEN_HRM, &trashopenhrmxpm);
- stock_pixbuf_gdk(ctree, STOCK_PIXMAP_TRASH_CLOSE, &trashxpm);
- stock_pixbuf_gdk(ctree, STOCK_PIXMAP_TRASH_CLOSE_HRM, &trashhrmxpm);
- stock_pixbuf_gdk(ctree, STOCK_PIXMAP_QUEUE_CLOSE, &queuexpm);
- stock_pixbuf_gdk(ctree, STOCK_PIXMAP_QUEUE_CLOSE_HRM, &queuehrmxpm);
- stock_pixbuf_gdk(ctree, STOCK_PIXMAP_QUEUE_OPEN, &queueopenxpm);
- stock_pixbuf_gdk(ctree, STOCK_PIXMAP_QUEUE_OPEN_HRM, &queueopenhrmxpm);
- stock_pixbuf_gdk(ctree, STOCK_PIXMAP_DRAFTS_CLOSE, &draftsxpm);
- stock_pixbuf_gdk(ctree, STOCK_PIXMAP_DRAFTS_OPEN, &draftsopenxpm);
- stock_pixbuf_gdk(ctree, STOCK_PIXMAP_DIR_NOSELECT, &noselectxpm);
-
- stock_pixbuf_gdk(ctree, STOCK_PIXMAP_INBOX_CLOSE_MARK, &m_inboxxpm);
- stock_pixbuf_gdk(ctree, STOCK_PIXMAP_INBOX_CLOSE_HRM_MARK, &m_inboxhrmxpm);
- stock_pixbuf_gdk(ctree, STOCK_PIXMAP_INBOX_OPEN_MARK, &m_inboxopenxpm);
- stock_pixbuf_gdk(ctree, STOCK_PIXMAP_INBOX_OPEN_HRM_MARK, &m_inboxopenhrmxpm);
- stock_pixbuf_gdk(ctree, STOCK_PIXMAP_OUTBOX_CLOSE_MARK, &m_outboxxpm);
- stock_pixbuf_gdk(ctree, STOCK_PIXMAP_OUTBOX_CLOSE_HRM_MARK, &m_outboxhrmxpm);
- stock_pixbuf_gdk(ctree, STOCK_PIXMAP_OUTBOX_OPEN_MARK, &m_outboxopenxpm);
- stock_pixbuf_gdk(ctree, STOCK_PIXMAP_OUTBOX_OPEN_HRM_MARK, &m_outboxopenhrmxpm);
- stock_pixbuf_gdk(ctree, STOCK_PIXMAP_DIR_CLOSE_MARK, &m_folderxpm);
- stock_pixbuf_gdk(ctree, STOCK_PIXMAP_DIR_CLOSE_HRM_MARK, &m_folderhrmxpm);
- stock_pixbuf_gdk(ctree, STOCK_PIXMAP_DIR_OPEN_MARK, &m_folderopenxpm);
- stock_pixbuf_gdk(ctree, STOCK_PIXMAP_DIR_OPEN_HRM_MARK, &m_folderopenhrmxpm);
- stock_pixbuf_gdk(ctree, STOCK_PIXMAP_TRASH_OPEN_MARK, &m_trashopenxpm);
- stock_pixbuf_gdk(ctree, STOCK_PIXMAP_TRASH_OPEN_HRM_MARK, &m_trashopenhrmxpm);
- stock_pixbuf_gdk(ctree, STOCK_PIXMAP_TRASH_CLOSE_MARK, &m_trashxpm);
- stock_pixbuf_gdk(ctree, STOCK_PIXMAP_TRASH_CLOSE_HRM_MARK, &m_trashhrmxpm);
- stock_pixbuf_gdk(ctree, STOCK_PIXMAP_QUEUE_CLOSE_MARK, &m_queuexpm);
- stock_pixbuf_gdk(ctree, STOCK_PIXMAP_QUEUE_CLOSE_HRM_MARK, &m_queuehrmxpm);
- stock_pixbuf_gdk(ctree, STOCK_PIXMAP_QUEUE_OPEN_MARK, &m_queueopenxpm);
- stock_pixbuf_gdk(ctree, STOCK_PIXMAP_QUEUE_OPEN_HRM_MARK, &m_queueopenhrmxpm);
- stock_pixbuf_gdk(ctree, STOCK_PIXMAP_DRAFTS_CLOSE_MARK, &m_draftsxpm);
- stock_pixbuf_gdk(ctree, STOCK_PIXMAP_DRAFTS_OPEN_MARK, &m_draftsopenxpm);
+ stock_pixbuf_gdk(STOCK_PIXMAP_INBOX_CLOSE, &inboxxpm);
+ stock_pixbuf_gdk(STOCK_PIXMAP_INBOX_CLOSE_HRM, &inboxhrmxpm);
+ stock_pixbuf_gdk(STOCK_PIXMAP_INBOX_OPEN, &inboxopenxpm);
+ stock_pixbuf_gdk(STOCK_PIXMAP_INBOX_OPEN_HRM, &inboxopenhrmxpm);
+ stock_pixbuf_gdk(STOCK_PIXMAP_OUTBOX_CLOSE, &outboxxpm);
+ stock_pixbuf_gdk(STOCK_PIXMAP_OUTBOX_CLOSE_HRM, &outboxhrmxpm);
+ stock_pixbuf_gdk(STOCK_PIXMAP_OUTBOX_OPEN, &outboxopenxpm);
+ stock_pixbuf_gdk(STOCK_PIXMAP_OUTBOX_OPEN_HRM, &outboxopenhrmxpm);
+ stock_pixbuf_gdk(STOCK_PIXMAP_DIR_CLOSE, &folderxpm);
+ stock_pixbuf_gdk(STOCK_PIXMAP_DIR_CLOSE_HRM, &folderhrmxpm);
+ stock_pixbuf_gdk(STOCK_PIXMAP_DIR_OPEN, &folderopenxpm);
+ stock_pixbuf_gdk(STOCK_PIXMAP_DIR_OPEN_HRM, &folderopenhrmxpm);
+ stock_pixbuf_gdk(STOCK_PIXMAP_TRASH_OPEN, &trashopenxpm);
+ stock_pixbuf_gdk(STOCK_PIXMAP_TRASH_OPEN_HRM, &trashopenhrmxpm);
+ stock_pixbuf_gdk(STOCK_PIXMAP_TRASH_CLOSE, &trashxpm);
+ stock_pixbuf_gdk(STOCK_PIXMAP_TRASH_CLOSE_HRM, &trashhrmxpm);
+ stock_pixbuf_gdk(STOCK_PIXMAP_QUEUE_CLOSE, &queuexpm);
+ stock_pixbuf_gdk(STOCK_PIXMAP_QUEUE_CLOSE_HRM, &queuehrmxpm);
+ stock_pixbuf_gdk(STOCK_PIXMAP_QUEUE_OPEN, &queueopenxpm);
+ stock_pixbuf_gdk(STOCK_PIXMAP_QUEUE_OPEN_HRM, &queueopenhrmxpm);
+ stock_pixbuf_gdk(STOCK_PIXMAP_DRAFTS_CLOSE, &draftsxpm);
+ stock_pixbuf_gdk(STOCK_PIXMAP_DRAFTS_OPEN, &draftsopenxpm);
+ stock_pixbuf_gdk(STOCK_PIXMAP_DIR_NOSELECT, &noselectxpm);
+
+ stock_pixbuf_gdk(STOCK_PIXMAP_INBOX_CLOSE_MARK, &m_inboxxpm);
+ stock_pixbuf_gdk(STOCK_PIXMAP_INBOX_CLOSE_HRM_MARK, &m_inboxhrmxpm);
+ stock_pixbuf_gdk(STOCK_PIXMAP_INBOX_OPEN_MARK, &m_inboxopenxpm);
+ stock_pixbuf_gdk(STOCK_PIXMAP_INBOX_OPEN_HRM_MARK, &m_inboxopenhrmxpm);
+ stock_pixbuf_gdk(STOCK_PIXMAP_OUTBOX_CLOSE_MARK, &m_outboxxpm);
+ stock_pixbuf_gdk(STOCK_PIXMAP_OUTBOX_CLOSE_HRM_MARK, &m_outboxhrmxpm);
+ stock_pixbuf_gdk(STOCK_PIXMAP_OUTBOX_OPEN_MARK, &m_outboxopenxpm);
+ stock_pixbuf_gdk(STOCK_PIXMAP_OUTBOX_OPEN_HRM_MARK, &m_outboxopenhrmxpm);
+ stock_pixbuf_gdk(STOCK_PIXMAP_DIR_CLOSE_MARK, &m_folderxpm);
+ stock_pixbuf_gdk(STOCK_PIXMAP_DIR_CLOSE_HRM_MARK, &m_folderhrmxpm);
+ stock_pixbuf_gdk(STOCK_PIXMAP_DIR_OPEN_MARK, &m_folderopenxpm);
+ stock_pixbuf_gdk(STOCK_PIXMAP_DIR_OPEN_HRM_MARK, &m_folderopenhrmxpm);
+ stock_pixbuf_gdk(STOCK_PIXMAP_TRASH_OPEN_MARK, &m_trashopenxpm);
+ stock_pixbuf_gdk(STOCK_PIXMAP_TRASH_OPEN_HRM_MARK, &m_trashopenhrmxpm);
+ stock_pixbuf_gdk(STOCK_PIXMAP_TRASH_CLOSE_MARK, &m_trashxpm);
+ stock_pixbuf_gdk(STOCK_PIXMAP_TRASH_CLOSE_HRM_MARK, &m_trashhrmxpm);
+ stock_pixbuf_gdk(STOCK_PIXMAP_QUEUE_CLOSE_MARK, &m_queuexpm);
+ stock_pixbuf_gdk(STOCK_PIXMAP_QUEUE_CLOSE_HRM_MARK, &m_queuehrmxpm);
+ stock_pixbuf_gdk(STOCK_PIXMAP_QUEUE_OPEN_MARK, &m_queueopenxpm);
+ stock_pixbuf_gdk(STOCK_PIXMAP_QUEUE_OPEN_HRM_MARK, &m_queueopenhrmxpm);
+ stock_pixbuf_gdk(STOCK_PIXMAP_DRAFTS_CLOSE_MARK, &m_draftsxpm);
+ stock_pixbuf_gdk(STOCK_PIXMAP_DRAFTS_OPEN_MARK, &m_draftsopenxpm);
normal_font = pango_font_description_from_string(NORMAL_FONT);
if (normal_font) {
main_window_cursor_wait(mainwin);
if (folderview->selected)
- sel_item = gtk_cmctree_node_get_row_data(ctree, folderview->selected);
+ sel_item = folderview_get_selected_item(folderview);
if (folderview->opened)
- op_item = gtk_cmctree_node_get_row_data(ctree, folderview->opened);
+ op_item = folderview_get_opened_item(folderview);
folderview->selected = NULL;
folderview->opened = NULL;
}
static void mark_all_read_cb(GtkAction *action, gpointer data)
+{
+ mark_all_read_handler(action, data, FALSE);
+}
+
+static void mark_all_read_recursive_cb(GtkAction *action, gpointer data)
+{
+ mark_all_read_handler(action, data, TRUE);
+}
+
+static void mark_all_read_handler(GtkAction *action, gpointer data, gboolean recursive)
{
FolderView *folderview = (FolderView *)data;
FolderItem *item;
AlertValue val;
+ gchar *message;
item = folderview_get_selected_item(folderview);
if (item == NULL)
return;
- if (folderview->summaryview->folder_item != item
- && prefs_common.ask_mark_all_read) {
+ message = recursive? _("Do you really want to mark all mails in this "
+ "folder and its sub-folders as read?") :
+ _("Do you really want to mark all mails in this "
+ "folder as read?");
+ if (folderview->summaryview->folder_item != item &&
+ prefs_common.ask_mark_all_read) {
val = alertpanel_full(_("Mark all as read"),
- _("Do you really want to mark all mails in this "
- "folder as read?"), GTK_STOCK_NO, GTK_STOCK_YES, NULL,
+ message, GTK_STOCK_NO, GTK_STOCK_YES, NULL,
TRUE, NULL, ALERT_QUESTION, G_ALERTDEFAULT);
if ((val & ~G_ALERTDISABLE) != G_ALERTALTERNATE)
else if (val & G_ALERTDISABLE)
prefs_common.ask_mark_all_read = FALSE;
}
-
folder_item_update_freeze();
- if (folderview->summaryview->folder_item != item)
+ if (folderview->summaryview->folder_item != item && !recursive)
summary_lock(folderview->summaryview);
else
summary_freeze(folderview->summaryview);
- folderutils_mark_all_read(item);
+ if (recursive)
+ folderutils_mark_all_read_recursive(item);
+ else
+ folderutils_mark_all_read(item);
- if (folderview->summaryview->folder_item != item)
+ if (folderview->summaryview->folder_item != item && !recursive)
summary_unlock(folderview->summaryview);
else
summary_thaw(folderview->summaryview);
return;
}
+ gtk_cmclist_freeze(GTK_CMCLIST(ctree));
+ gtkut_ctree_expand_parent_all(ctree, node);
+
folderview->open_folder = TRUE;
gtkut_ctree_set_focus_row(ctree, node);
gtk_cmctree_select(ctree, node);
+ gtk_cmclist_thaw(GTK_CMCLIST(ctree));
if ((folderview->summaryview->folder_item &&
folderview->summaryview->folder_item->total_msgs > 0) ||
prefs_common.layout_mode == SMALL_LAYOUT)
summary_grab_focus(folderview->summaryview);
else
gtk_widget_grab_focus(folderview->ctree);
-
- gtkut_ctree_expand_parent_all(ctree, node);
}
void folderview_unselect(FolderView *folderview)
return gtk_cmctree_node_get_row_data(ctree, folderview->selected);
}
+FolderItem *folderview_get_opened_item(FolderView *folderview)
+{
+ GtkCMCTree *ctree = GTK_CMCTREE(folderview->ctree);
+
+ if (!folderview->opened) return NULL;
+ return gtk_cmctree_node_get_row_data(ctree, folderview->opened);
+}
+
static void folderview_set_folders(FolderView *folderview)
{
GList *list;
static gchar *get_scan_str(FolderItem *item)
{
if (item->path)
- return g_strdup_printf(_("Scanning folder %s%c%s..."),
- item->folder->name, G_DIR_SEPARATOR,
- item->path);
+ return g_strdup_printf(_("Scanning folder %s/%s..."),
+ item->folder->name, item->path);
else
return g_strdup_printf(_("Scanning folder %s..."),
item->folder->name);
if (item->search_match) {
if (!searchicon) {
- stock_pixbuf_gdk(folderview->ctree, STOCK_PIXMAP_QUICKSEARCH,
+ stock_pixbuf_gdk(STOCK_PIXMAP_QUICKSEARCH,
&searchicon);
}
xpm = openxpm = searchicon;
node = gtk_cmctree_find_by_row_data(ctree, root, item);
if (!node)
- g_warning("%s not found.\n", item->path);
+ g_warning("%s not found.", item->path);
else {
parent = GTK_CMCTREE_ROW(node)->parent;
if (*prev && parent == GTK_CMCTREE_ROW(*prev)->parent)
fpopup->add_menuitems(ui_manager, item);
MENUITEM_ADDUI_MANAGER(ui_manager, "/Popup/FolderViewPopup", "MarkAllRead", "FolderViewPopup/MarkAllRead", GTK_UI_MANAGER_MENUITEM)
+ MENUITEM_ADDUI_MANAGER(ui_manager, "/Popup/FolderViewPopup", "MarkAllReadRec", "FolderViewPopup/MarkAllReadRec", GTK_UI_MANAGER_MENUITEM)
MENUITEM_ADDUI_MANAGER(ui_manager, "/Popup/FolderViewPopup", "Separator1", "FolderViewPopup/---", GTK_UI_MANAGER_SEPARATOR)
MENUITEM_ADDUI_MANAGER(ui_manager, "/Popup/FolderViewPopup", "RunProcessing", "FolderViewPopup/RunProcessing", GTK_UI_MANAGER_MENUITEM)
MENUITEM_ADDUI_MANAGER(ui_manager, "/Popup/FolderViewPopup", "SearchFolder", "FolderViewPopup/SearchFolder", GTK_UI_MANAGER_MENUITEM)
cm_menu_set_sensitive_full(ui_manager, "Popup/"name, sens)
SET_SENS("FolderViewPopup/MarkAllRead", item->unread_msgs >= 1);
+ SET_SENS("FolderViewPopup/MarkAllReadRec", folderview_have_unread_children(folderview,item));
SET_SENS("FolderViewPopup/SearchFolder", item->total_msgs >= 1 &&
folderview->selected == folderview->opened);
SET_SENS("FolderViewPopup/Properties", TRUE);
static gboolean folderview_key_pressed(GtkWidget *widget, GdkEventKey *event,
FolderView *folderview)
{
+ GtkCMCTreeNode *node;
+ FolderItem *item;
+
if (!event) return FALSE;
if (quicksearch_has_focus(folderview->summaryview->quicksearch))
switch (event->keyval) {
case GDK_KEY_Right:
-#ifndef GENERIC_UMPC
- case GDK_KEY_Return:
- case GDK_KEY_KP_Enter:
-#endif
if (folderview->selected) {
- folderview_select_node(folderview,
- folderview->selected);
+ if (GTK_CMCTREE_ROW(folderview->selected)->children != NULL
+ && !GTK_CMCTREE_ROW(folderview->selected)->expanded)
+ gtk_cmctree_expand(GTK_CMCTREE(folderview->ctree),
+ folderview->selected);
+ else
+ folderview_select_node(folderview,
+ folderview->selected);
}
break;
#ifdef GENERIC_UMPC
folderview->selected);
}
break;
+#else
+ case GDK_KEY_Return:
+ case GDK_KEY_KP_Enter:
+ if (folderview->selected)
+ folderview_select_node(folderview, folderview->selected);
+ break;
#endif
case GDK_KEY_space:
BREAK_ON_MODIFIER_KEY();
folderview->selected);
}
break;
+ case GDK_KEY_Left:
+ if (folderview->selected) {
+ if (GTK_CMCTREE_ROW(folderview->selected)->expanded) {
+ gtk_cmctree_collapse(GTK_CMCTREE(folderview->ctree),
+ folderview->selected);
+ } else {
+ if ((item = gtk_cmctree_node_get_row_data(GTK_CMCTREE(folderview->ctree),
+ folderview->selected))) {
+ if ((node = gtk_cmctree_find_by_row_data(GTK_CMCTREE(folderview->ctree),
+ NULL, folder_item_parent(item)))) {
+ gtk_sctree_select(GTK_SCTREE(folderview->ctree), node);
+ if (!gtk_cmctree_node_is_visible(GTK_CMCTREE(folderview->ctree), node))
+ gtk_cmctree_node_moveto(GTK_CMCTREE(folderview->ctree),
+ node, -1, 0, 0);
+ }
+ }
+ }
+ }
+ break;
+ case GDK_KEY_Home:
+ case GDK_KEY_End:
+ if (event->keyval == GDK_KEY_Home)
+ node = gtk_cmctree_node_nth(GTK_CMCTREE(folderview->ctree), 0);
+ else
+ node = gtk_cmctree_last(GTK_CMCTREE(folderview->ctree),
+ gtk_cmctree_node_nth(GTK_CMCTREE(folderview->ctree), 0));
+
+ gtk_sctree_select(GTK_SCTREE(folderview->ctree), node);
+
+ if (!gtk_cmctree_node_is_visible(GTK_CMCTREE(folderview->ctree), node))
+ gtk_cmctree_node_moveto(GTK_CMCTREE(folderview->ctree),
+ node, -1, 0, 0);
+ break;
default:
break;
}
static void folderview_empty_trash_cb(GtkAction *action, gpointer data)
{
FolderView *folderview = (FolderView *)data;
- GtkCMCTree *ctree = GTK_CMCTREE(folderview->ctree);
FolderItem *item;
GSList *mlist = NULL;
GSList *cur = NULL;
PrefsAccount *ac;
if (!folderview->selected) return;
- item = gtk_cmctree_node_get_row_data(ctree, folderview->selected);
+ item = folderview_get_selected_item(folderview);
cm_return_if_fail(item != NULL);
cm_return_if_fail(item->folder != NULL);
if (prefs_common.ask_on_clean) {
if (alertpanel(_("Empty trash"),
_("Delete all messages in trash?"),
- GTK_STOCK_CANCEL, _("+_Empty trash"), NULL) != G_ALERTALTERNATE)
+ GTK_STOCK_CANCEL, g_strconcat("+", _("_Empty trash"), NULL), NULL) != G_ALERTALTERNATE)
return;
}
static void folderview_send_queue_cb(GtkAction *action, gpointer data)
{
FolderView *folderview = (FolderView *)data;
- GtkCMCTree *ctree = GTK_CMCTREE(folderview->ctree);
FolderItem *item;
FolderItem *special_queue = NULL;
PrefsAccount *ac;
gchar *errstr = NULL;
if (!folderview->selected) return;
- item = gtk_cmctree_node_get_row_data(ctree, folderview->selected);
+ item = folderview_get_selected_item(folderview);
cm_return_if_fail(item != NULL);
cm_return_if_fail(item->folder != NULL);
static void folderview_run_processing_cb(GtkAction *action, gpointer data)
{
FolderView *folderview = (FolderView *)data;
- GtkCMCTree *ctree = GTK_CMCTREE(folderview->ctree);
FolderItem *item;
if (!folderview->selected) return;
- item = gtk_cmctree_node_get_row_data(ctree, folderview->selected);
+ item = folderview_get_selected_item(folderview);
cm_return_if_fail(item != NULL);
cm_return_if_fail(item->folder != NULL);
static void folderview_property_cb(GtkAction *action, gpointer data)
{
FolderView *folderview = (FolderView *)data;
- GtkCMCTree *ctree = GTK_CMCTREE(folderview->ctree);
FolderItem *item;
if (!folderview->selected) return;
- item = gtk_cmctree_node_get_row_data(ctree, folderview->selected);
+ item = folderview_get_selected_item(folderview);
cm_return_if_fail(item != NULL);
cm_return_if_fail(item->folder != NULL);
statusbar_verbosity_set(FALSE);
folder_item_update_freeze();
+ gtk_cmclist_freeze(GTK_CMCLIST(folderview->ctree));
if ((status = folder_item_move_to(from_folder, to_folder, &new_folder, copy)) == F_MOVE_OK) {
statusbar_verbosity_set(FALSE);
main_window_cursor_normal(folderview->mainwin);
gtk_cmctree_find_by_row_data(GTK_CMCTREE(folderview->ctree),
NULL, to_folder), new_folder->folder);
folderview_select(folderview, new_folder);
+ gtk_cmclist_thaw(GTK_CMCLIST(folderview->ctree));
} else {
statusbar_verbosity_set(FALSE);
main_window_cursor_normal(folderview->mainwin);
STATUSBAR_POP(folderview->mainwin);
+ gtk_cmclist_thaw(GTK_CMCLIST(folderview->ctree));
folder_item_update_thaw();
switch (status) {
case F_MOVE_FAILED_DEST_IS_PARENT:
static void folderview_processing_cb(GtkAction *action, gpointer data)
{
FolderView *folderview = (FolderView *)data;
- GtkCMCTree *ctree = GTK_CMCTREE(folderview->ctree);
FolderItem *item;
gchar *id, *title;
if (!folderview->selected) return;
- item = gtk_cmctree_node_get_row_data(ctree, folderview->selected);
+ item = folderview_get_selected_item(folderview);
cm_return_if_fail(item != NULL);
cm_return_if_fail(item->folder != NULL);
last_derive != prefs_common.derive_from_normal_font)
update_font = TRUE;
+ if (!update_font)
+ return;
+
g_free(last_smallfont);
last_smallfont = g_strdup(SMALL_FONT);
g_free(last_normalfont);
last_boldfont = g_strdup(BOLD_FONT);
last_derive = prefs_common.derive_from_normal_font;
- if (update_font) {
- normal_style = normal_color_style = bold_style =
- bold_color_style = bold_tgtfold_style = NULL;
+ normal_style = normal_color_style = bold_style =
+ bold_color_style = bold_tgtfold_style = NULL;
- folderview_init(folderview);
- }
+ folderview_init(folderview);
gtk_cmclist_freeze(GTK_CMCLIST(folderview->ctree));
folderview_column_set_titles(folderview);
folderview_set_all();
source, strlen(source));
}
} else {
- g_warning("unknown info %d\n", info);
+ g_warning("unknown info %d", info);
}
}
}
g_hash_table_remove(folderview_popups, fpopup->klass);
}
+
+void folderview_freeze(FolderView *folderview)
+{
+ if (folderview)
+ gtk_cmclist_freeze(GTK_CMCLIST(folderview->ctree));
+}
+
+void folderview_thaw(FolderView *folderview)
+{
+ if (folderview)
+ gtk_cmclist_thaw(GTK_CMCLIST(folderview->ctree));
+}