#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 &&
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;
}
}
}