guint labelcolor);
static void summary_thread_build(SummaryView *summaryview);
-GtkTargetEntry summary_drag_types[2] =
+GtkTargetEntry summary_drag_types[3] =
{
{"text/uri-list", 0, TARGET_MAIL_URI_LIST},
- {"claws-mail/internal", GTK_TARGET_SAME_APP, TARGET_DUMMY}
+ {"claws-mail/internal", GTK_TARGET_SAME_APP, TARGET_DUMMY},
+ {"claws-mail/msg-path-list", 0, TARGET_MAIL_CM_PATH_LIST},
};
#define DO_ACTION(name, act) { \
static GtkActionEntry summary_popup_entries[] =
{
{"SummaryViewPopup", NULL, "SummaryViewPopup" },
- {"SummaryViewPopup/ReplyTo", NULL, "Repl_y to" },
- {"SummaryViewPopup/Mark", NULL, "_Mark" },
- {"SummaryViewPopup/ColorLabel", NULL, "Color la_bel" },
- {"SummaryViewPopup/Tags", NULL, "Ta_gs" },
- {"SummaryViewPopup/CreateFilterRule", NULL, "Create _filter rule" },
+ {"SummaryViewPopup/ReplyTo", NULL, N_("Repl_y to") },
+ {"SummaryViewPopup/Mark", NULL, N_("_Mark") },
+ {"SummaryViewPopup/ColorLabel", NULL, N_("Color la_bel") },
+ {"SummaryViewPopup/Tags", NULL, N_("Ta_gs") },
+ {"SummaryViewPopup/CreateFilterRule", NULL, N_("Create _filter rule") },
#ifndef GENERIC_UMPC
- {"SummaryViewPopup/CreateProcessingRule", NULL, "Create processing rule" },
+ {"SummaryViewPopup/CreateProcessingRule", NULL, N_("Create processing rule") },
#endif
- {"SummaryViewPopup/View", NULL, "_View" },
+ {"SummaryViewPopup/View", NULL, N_("_View") },
};
static const gchar *const col_label[N_SUMMARY_COLS] = {
summary_update_folder_hook,
(gpointer) summaryview);
- summaryview->target_list = gtk_target_list_new(summary_drag_types, 2);
+ summaryview->target_list = gtk_target_list_new(summary_drag_types, 3);
summaryview->quicksearch = quicksearch;
inc_lock();
summary_lock(summaryview);
-
+
+ menu_set_sensitive_all(GTK_MENU_SHELL(summaryview->popupmenu), TRUE);
+
utils_free_regex();
is_refresh = (item == summaryview->folder_item) ? TRUE : FALSE;
GTK_EVENTS_FLUSH();
msginfo = gtk_cmctree_node_get_row_data(ctree, row);
-
- cm_return_if_fail(msginfo);
+
+ if (!msginfo) {
+ debug_print("NULL msginfo\n");
+ summary_unlock(summaryview);
+ END_TIMING();
+ return;
+ }
if (new_window && prefs_common.layout_mode != SMALL_LAYOUT) {
MessageView *msgview;
menu_set_insensitive_all
(GTK_MENU_SHELL(summaryview->popupmenu));
gtk_widget_grab_focus(summaryview->folderview->ctree);
- } else
+ } else {
+ menu_set_sensitive_all(GTK_MENU_SHELL(summaryview->popupmenu), TRUE);
gtk_widget_grab_focus(summaryview->ctree);
-
+ }
summary_update_status(summaryview);
summary_status_show(summaryview);
menu_set_insensitive_all
(GTK_MENU_SHELL(summaryview->popupmenu));
gtk_widget_grab_focus(summaryview->folderview->ctree);
- } else
+ } else {
+ menu_set_sensitive_all(GTK_MENU_SHELL(summaryview->popupmenu), TRUE);
gtk_widget_grab_focus(summaryview->ctree);
+ }
summary_update_status(summaryview);
summary_status_show(summaryview);
GtkCMCTreeNode *node = NULL;
GtkCMCTreeNode *focus_node = GTK_CMCTREE_NODE (g_list_nth (GTK_CMCLIST(ctree)->row_list, GTK_CMCLIST(ctree)->focus_row));
+ g_signal_handlers_block_by_func(G_OBJECT(ctree),
+ G_CALLBACK(summary_tree_collapsed), summaryview);
summary_freeze(summaryview);
GTK_SCTREE(ctree)->sorting = TRUE;
gtk_sctree_select(GTK_SCTREE(ctree), focus_node);
node = GTK_CMCTREE_NODE(GTK_CMCLIST(ctree)->row_list);
while (node) {
- if (GTK_CMCTREE_ROW(node)->children)
+ if (GTK_CMCTREE_ROW(node)->children) {
gtk_cmctree_collapse(ctree, node);
+ summary_set_row_marks(summaryview, node);
+ }
node = GTK_CMCTREE_ROW(node)->sibling;
}
GTK_SCTREE(ctree)->anchor_row =
gtk_cmctree_node_nth(ctree, GTK_CMCLIST(ctree)->focus_row);
summary_thaw(summaryview);
+ g_signal_handlers_unblock_by_func(G_OBJECT(ctree),
+ G_CALLBACK(summary_tree_collapsed), summaryview);
summaryview->thread_collapsed = TRUE;
summaryview);
gtk_drag_dest_set(ctree, GTK_DEST_DEFAULT_ALL & ~GTK_DEST_DEFAULT_HIGHLIGHT,
- summary_drag_types, 2,
+ summary_drag_types, 3,
GDK_ACTION_MOVE | GDK_ACTION_COPY | GDK_ACTION_DEFAULT);
g_signal_connect(G_OBJECT(ctree), "drag_data_received",
selection_data->target, 8,
"Dummy-Summaryview",
strlen("Dummy-Summaryview")+1);
- }
+ } else if (info == TARGET_MAIL_CM_PATH_LIST) {
+ /* content: folder_item_identifier\nmsgid1\nmsgid2\nmsgid3 */
+
+ GtkCMCTree *ctree = GTK_CMCTREE(summaryview->ctree);
+ GList *cur;
+ MsgInfo *msginfo;
+ gchar *path_list = NULL;
+
+ /* identifier */
+ if(GTK_CMCLIST(ctree)->selection != NULL) {
+ msginfo = gtk_cmctree_node_get_row_data(ctree, GTK_CMCTREE_NODE(GTK_CMCLIST(ctree)->selection->data));
+ if(msginfo && msginfo->folder)
+ path_list = folder_item_get_identifier(msginfo->folder);
+ }
+
+ for (cur = GTK_CMCLIST(ctree)->selection;
+ cur != NULL && cur->data != NULL; cur = cur->next) {
+ gchar *tmp;
+
+ msginfo = gtk_cmctree_node_get_row_data(ctree, GTK_CMCTREE_NODE(cur->data));
+ if(!msginfo)
+ continue;
+ tmp = path_list;
+ path_list = g_strconcat(path_list, "\n", (msginfo->msgid ? msginfo->msgid : "unknown"), NULL);
+ g_free(tmp);
+ }
+
+ if (path_list != NULL) {
+ gtk_selection_data_set(selection_data,
+ selection_data->target, 8,
+ path_list, strlen(path_list));
+ g_free(path_list);
+ }
+ }
}
static gboolean summary_drag_motion_cb(GtkWidget *widget,
return -1;
res = (msginfo1->date_t - msginfo2->date_t);
+ if (res == 0)
+ res = msginfo1->msgnum - msginfo2->msgnum;
return res;
}