#include "folderview.h"
#include "summaryview.h"
#include "inputdialog.h"
+#include "grouplistdialog.h"
#include "manage_window.h"
#include "alertpanel.h"
#include "menu.h"
#include "prefs_account.h"
#include "account.h"
#include "folder.h"
-#include "grouplist_dialog.h"
#include "pixmaps/inbox.xpm"
#include "pixmaps/outbox.xpm"
gtk_signal_connect(GTK_OBJECT(ctree), "tree_select_row",
GTK_SIGNAL_FUNC(folderview_selected), folderview);
-
gtk_signal_connect_after(GTK_OBJECT(ctree), "tree_expand",
GTK_SIGNAL_FUNC(folderview_tree_expanded),
folderview);
name = " (News)"; break;
default:
name = "";
- break;
}
name = g_strconcat(item->name, name, NULL);
} else
name = g_strdup(item->name);
- break;
}
if (!GTK_CTREE_ROW(node)->expanded &&
gtk_ctree_node_set_text(ctree, node, COL_TOTAL, itos(item->total));
}
- if (item->stype == F_TRASH) return;
-
ctree_style = gtk_widget_get_style(GTK_WIDGET(ctree));
prev_style = gtk_ctree_node_get_row_style(ctree, node);
if (!prev_style)
if (item->stype == F_QUEUE) {
/* highlight queue folder if there are any messages */
use_bold = use_color = (item->total > 0);
+ } else if (item->stype == F_TRASH) {
+ /* Never highlight trash */
+ use_bold = FALSE;
+ use_color = FALSE;
} else {
/* if unread messages exist, print with bold font */
use_bold = (item->unread > 0) || add_unread_mark;
static void folderview_expand_func(GtkCTree *ctree, GtkCTreeNode *node,
gpointer data)
{
- if (GTK_CTREE_ROW(node)->children)
- gtk_ctree_expand(ctree, node);
+ FolderView *folderview = (FolderView *)data;
+ FolderItem *item;
+
+ if (GTK_CTREE_ROW(node)->children) {
+ item = gtk_ctree_node_get_row_data(ctree, node);
+ g_return_if_fail(item != NULL);
+
+ if (!item->collapsed)
+ gtk_ctree_expand(ctree, node);
+ else
+ folderview_update_node(folderview, node);
+ }
}
#define SET_SPECIAL_FOLDER(ctree, item) \
BREAK_ON_MODIFIER_KEY();
summary_pass_key_press_event(folderview->summaryview, event);
default:
- break;
}
}
static void folderview_tree_expanded(GtkCTree *ctree, GtkCTreeNode *node,
FolderView *folderview)
{
+ FolderItem *item;
+
+ item = gtk_ctree_node_get_row_data(ctree, node);
+ g_return_if_fail(item != NULL);
+ item->collapsed = FALSE;
folderview_update_node(folderview, node);
}
static void folderview_tree_collapsed(GtkCTree *ctree, GtkCTreeNode *node,
FolderView *folderview)
{
+ FolderItem *item;
+
+ item = gtk_ctree_node_get_row_data(ctree, node);
+ g_return_if_fail(item != NULL);
+ item->collapsed= TRUE;
folderview_update_node(folderview, node);
}
prefs_common.folder_col_total = width;
break;
default:
- break;
}
}
if (item->folder->remove_folder(item->folder, item) < 0) {
alertpanel_error(_("Can't remove the folder `%s'."),
item->path);
+ if (folderview->opened == folderview->selected)
+ summary_show(folderview->summaryview,
+ folderview->summaryview->folder_item,
+ FALSE);
return;
}
g_return_if_fail(item->folder->type == F_NEWS);
g_return_if_fail(item->folder->account != NULL);
- new_group = grouplist_dialog(item);
+ new_group = grouplist_dialog(item->folder);
if (!new_group) return;
if (GTK_CTREE_ROW(folderview->selected)->parent != NULL)
acceptable = TRUE;
break;
default:
- break;
}
}
}