#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);
if (!item) return;
+ debug_print("*** select enter\n");
node = gtk_ctree_find_by_row_data(ctree, NULL, item);
if (node) folderview_select_node(folderview, node);
+ debug_print("*** select leave\n");
}
static void folderview_select_node(FolderView *folderview, GtkCTreeNode *node)
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;
}
}
folderview->selected = row;
+ debug_print("*** selected enter\n");
+
if (folderview->opened == row) {
folderview->open_folder = FALSE;
return;
gdk_pointer_ungrab(GDK_CURRENT_TIME);
}
+ debug_print("*** summary_show %s\n", item->name);
opened = summary_show(folderview->summaryview, item, FALSE);
if (!opened) {
folderview->open_folder = FALSE;
can_select = TRUE;
+
+
+ debug_print("*** selected leave\n");
}
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;
}
}
}