/*
* Sylpheed -- a GTK+ based, lightweight, and fast e-mail client
- * Copyright (C) 1999-2006 Hiroyuki Yamamoto and the Sylpheed-Claws team
+ * Copyright (C) 1999-2007 Hiroyuki Yamamoto and the Claws Mail team
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
GtkTargetEntry summary_drag_types[2] =
{
{"text/uri-list", 0, TARGET_MAIL_URI_LIST},
- {"sylpheed-claws/internal", GTK_TARGET_SAME_APP, TARGET_DUMMY}
+ {"claws-mail/internal", GTK_TARGET_SAME_APP, TARGET_DUMMY}
};
static GtkItemFactoryEntry summary_popup_entries[] =
{N_("/Repl_y to/_sender"), NULL, summary_reply_cb, COMPOSE_REPLY_TO_SENDER, NULL},
{N_("/Repl_y to/mailing _list"),
"<control>L", summary_reply_cb, COMPOSE_REPLY_TO_LIST, NULL},
- {N_("/---"), NULL, NULL, 0, "<Separator>"},
+ {"/---", NULL, NULL, 0, "<Separator>"},
{N_("/_Forward"), "<control><alt>F", summary_reply_cb, COMPOSE_FORWARD_INLINE, NULL},
{N_("/For_ward as attachment"), NULL, summary_reply_cb, COMPOSE_FORWARD_AS_ATTACH, NULL},
{N_("/Redirect"), NULL, summary_reply_cb, COMPOSE_REDIRECT, NULL},
- {N_("/---"), NULL, NULL, 0, "<Separator>"},
+ {"/---", NULL, NULL, 0, "<Separator>"},
{N_("/M_ove..."), "<control>O", summary_move_to, 0, NULL},
{N_("/_Copy..."), "<shift><control>O", summary_copy_to, 0, NULL},
{N_("/Move to _trash"), "<control>D", summary_delete_trash, 0, NULL},
{N_("/_Delete..."), NULL, summary_delete, 0, NULL},
- {N_("/---"), NULL, NULL, 0, "<Separator>"},
+ {"/---", NULL, NULL, 0, "<Separator>"},
{N_("/_Mark"), NULL, NULL, 0, "<Branch>"},
{N_("/_Mark/_Mark"), NULL, summary_mark, 0, NULL},
{N_("/_Mark/_Unmark"), NULL, summary_unmark, 0, NULL},
{N_("/_Mark/Unlock"), NULL, summary_msgs_unlock, 0, NULL},
{N_("/Color la_bel"), NULL, NULL, 0, NULL},
- {N_("/---"), NULL, NULL, 0, "<Separator>"},
+ {"/---", NULL, NULL, 0, "<Separator>"},
{N_("/Add sender to address boo_k"),
NULL, summary_add_address_cb, 0, NULL},
{N_("/Create f_ilter rule"), NULL, NULL, 0, "<Branch>"},
NULL, summary_create_processing_cb, FILTER_BY_TO, NULL},
{N_("/Create processing rule/by _Subject"),
NULL, summary_create_processing_cb, FILTER_BY_SUBJECT, NULL},
- {N_("/---"), NULL, NULL, 0, "<Separator>"},
+ {"/---", NULL, NULL, 0, "<Separator>"},
{N_("/_View"), NULL, NULL, 0, "<Branch>"},
{N_("/_View/Open in new _window"),
"<control><alt>N", summary_open_msg, 0, NULL},
{N_("/_View/Message _source"), "<control>U", summary_view_source, 0, NULL},
{N_("/_View/All _headers"), "<control>H", summary_show_all_header_cb, 0, "<ToggleItem>"},
- {N_("/---"), NULL, NULL, 0, "<Separator>"},
+ {"/---", NULL, NULL, 0, "<Separator>"},
{N_("/_Save as..."), "<control>S", summary_save_as, 0, NULL},
{N_("/_Print..."), "<control>P", summary_print, 0, NULL},
}; /* see also list in menu_connect_identical_items() in menu.c if this changes */
if (!item)
return;
- if(FOLDER_SHOWS_TO_HDR(item))
+ if (FOLDER_SHOWS_TO_HDR(item))
show_to = TRUE;
else
show_from = TRUE;
gboolean summary_show(SummaryView *summaryview, FolderItem *item)
{
GtkCTree *ctree = GTK_CTREE(summaryview->ctree);
- GtkCTreeNode *node;
+ GtkCTreeNode *node = NULL;
GSList *mlist = NULL;
gchar *buf;
gboolean is_refresh;
if (quicksearch_is_active(summaryview->quicksearch)) {
GSList *not_killed;
- gint interval = quicksearch_is_fast(summaryview->quicksearch) ? 1000:100;
+ gint interval = quicksearch_is_fast(summaryview->quicksearch) ? 5000:100;
START_TIMING("quicksearch");
gint num = 0, total = summaryview->folder_item->total_msgs;
statusbar_print_all(_("Searching in %s... \n"),
}
if (is_refresh) {
- summaryview->last_displayed = summaryview->displayed;
- summaryview->displayed =
- summary_find_msg_by_msgnum(summaryview,
- displayed_msgnum);
- if (!summaryview->displayed)
- messageview_clear(summaryview->messageview);
- summary_unlock(summaryview);
- summary_select_by_msgnum(summaryview, selected_msgnum);
- summary_lock(summaryview);
- if (!summaryview->selected) {
- /* no selected message - select first unread
- message, but do not display it */
- node = summary_find_next_flagged_msg(summaryview, NULL,
- MSG_UNREAD, FALSE);
- if (node == NULL && GTK_CLIST(ctree)->row_list != NULL)
+ if (!quicksearch_is_in_typing(summaryview->quicksearch)) {
+ summaryview->last_displayed = summaryview->displayed;
+ summaryview->displayed =
+ summary_find_msg_by_msgnum(summaryview,
+ displayed_msgnum);
+ if (!summaryview->displayed)
+ messageview_clear(summaryview->messageview);
+ summary_unlock(summaryview);
+ summary_select_by_msgnum(summaryview, selected_msgnum);
+ summary_lock(summaryview);
+ if (!summaryview->selected) {
+ /* no selected message - select first unread
+ message, but do not display it */
+ node = summary_find_next_flagged_msg(summaryview, NULL,
+ MSG_UNREAD, FALSE);
+ if (node == NULL && GTK_CLIST(ctree)->row_list != NULL)
+ node = gtk_ctree_node_nth
+ (ctree,
+ item->sort_type == SORT_DESCENDING
+ ? 0 : GTK_CLIST(ctree)->rows - 1);
+ summary_unlock(summaryview);
+ summary_select_node(summaryview, node, FALSE, TRUE);
+ summary_lock(summaryview);
+ }
+ } else {
+ /* just select first/last */
+ if (GTK_CLIST(ctree)->row_list != NULL)
node = gtk_ctree_node_nth
(ctree,
item->sort_type == SORT_DESCENDING
? 0 : GTK_CLIST(ctree)->rows - 1);
- summary_unlock(summaryview);
- summary_select_node(summaryview, node, FALSE, TRUE);
- summary_lock(summaryview);
+ gtk_sctree_select(GTK_SCTREE(ctree), node);
+ gtk_ctree_node_moveto(ctree, node, 0, 0.5, 0);
}
} else {
switch (prefs_common.select_on_entry) {
case S_COL_DATE:
case S_COL_NUMBER:
if(type == S_COL_FROM && item != NULL &&
- FOLDER_SHOWS_TO_HDR(item))
+ FOLDER_SHOWS_TO_HDR(item) &&
+ !summaryview->col_state[summaryview->col_pos[S_COL_TO]].visible)
type = S_COL_TO;
if (prefs_common.trans_hdr)
title = gettext(col_label[type]);
main_window_cursor_wait(summaryview->mainwin);
- summary_freeze(summaryview);
gtk_clist_set_compare_func(clist, cmp_func);
gtk_clist_set_sort_type(clist, (GtkSortType)sort_type);
gtk_ctree_node_moveto(ctree, summaryview->selected, 0, 0.5, 0);
main_window_cursor_normal(summaryview->mainwin);
- summary_thaw(summaryview);
debug_print("done.\n");
STATUSBAR_POP(summaryview->mainwin);
MsgInfo *msginfo;
GtkCTreeNode *node = NULL;
GHashTable *msgid_table;
- GHashTable *subject_table;
+ GHashTable *subject_table = NULL;
GSList * cur;
START_TIMING("");
typedef struct {
MsgInfo *msginfo;
SummaryView *summaryview;
- GtkCTreeNode *row;
} MarkAsReadData;
static int msginfo_mark_as_read_timeout(void *data)
if (mdata->msginfo == summary_get_selected_msg(mdata->summaryview))
msginfo_mark_as_read(mdata->summaryview, mdata->msginfo,
- mdata->row);
+ mdata->summaryview->selected);
g_free(mdata);
MarkAsReadData *data = g_new0(MarkAsReadData, 1);
data->summaryview = summaryview;
data->msginfo = msginfo;
- data->row = row;
- gtk_timeout_add(prefs_common.mark_as_read_delay * 1000,
+ g_timeout_add(prefs_common.mark_as_read_delay * 1000,
msginfo_mark_as_read_timeout, data);
} else if (new_window || !prefs_common.mark_as_read_on_new_window) {
msginfo_mark_as_read(summaryview, msginfo, row);
msginfo->msgnum);
}
-void summary_mark_as_read
-(SummaryView *summaryview)
+void summary_mark_as_read(SummaryView *summaryview)
{
GtkCTree *ctree = GTK_CTREE(summaryview->ctree);
GList *cur;
} else {
summary_msginfo_unset_flags(msginfo, MSG_SPAM, 0);
}
+ summaryview->display_msg = prefs_common.always_show_msg;
+
summary_set_row_marks(summaryview, row);
}
} else {
summary_status_show(summaryview);
}
-void summary_select_thread(SummaryView *summaryview)
+void summary_select_thread(SummaryView *summaryview, gboolean delete_thread)
{
GtkCTree *ctree = GTK_CTREE(summaryview->ctree);
GtkCTreeNode *node = summaryview->selected;
gtk_ctree_select_recursive(ctree, node);
+ if (delete_thread) {
+ if (FOLDER_TYPE(summaryview->folder_item->folder) == F_NEWS)
+ summary_delete(summaryview);
+ else
+ summary_delete_trash(summaryview);
+ }
+
summary_status_show(summaryview);
}
MsgInfo *msginfo = gtk_ctree_node_get_row_data(
GTK_CTREE(summaryview->ctree),
node);
- messageview_print(msginfo, summaryview->messageview->all_headers);
+ gint sel_start = -1, sel_end = -1, partnum = 0;
+
+ if (node == summaryview->displayed) {
+ partnum = mimeview_get_selected_part_num(summaryview->messageview->mimeview);
+ textview_get_selection_offsets(summaryview->messageview->mimeview->textview,
+ &sel_start, &sel_end);
+ }
+ messageview_print(msginfo, summaryview->messageview->all_headers,
+ sel_start, sel_end, partnum);
}
#endif
}
switch (event->keyval) {
case GDK_space: /* Page down or go to the next */
handled = TRUE;
+ if (event->state & GDK_CONTROL_MASK)
+ event->state &= ~GDK_CONTROL_MASK;
if (event->state & GDK_SHIFT_MASK)
mimeview_scroll_page(messageview->mimeview, TRUE);
else {
}
}
-void summaryview_activate_quicksearch(SummaryView *summaryview)
+void summaryview_activate_quicksearch(SummaryView *summaryview, gboolean show)
{
+ prefs_common.show_searchbar = show;
gtk_toggle_button_set_active(
GTK_TOGGLE_BUTTON(summaryview->toggle_search),
- TRUE);
- quicksearch_show(summaryview->quicksearch);
+ show);
+ if (show) {
+ quicksearch_show(summaryview->quicksearch);
+ } else {
+ quicksearch_hide(summaryview->quicksearch);
+ }
}
static void summary_open_row(GtkSCTree *sctree, SummaryView *summaryview)
void summary_set_prefs_from_folderitem(SummaryView *summaryview, FolderItem *item)
{
+ FolderSortKey sort_key;
+ FolderSortType sort_type;
g_return_if_fail(summaryview != NULL);
g_return_if_fail(item != NULL);
summaryview->simplify_subject_preg = summary_compile_simplify_regexp(item->prefs->simplify_subject_regexp);
/* Sorting */
- summaryview->sort_key = item->sort_key;
- summaryview->sort_type = item->sort_type;
-
+ if (folder_get_sort_type(item->folder, &sort_key, &sort_type)) {
+ summaryview->sort_key = sort_key;
+ summaryview->sort_type = sort_type;
+ } else {
+ summaryview->sort_key = item->sort_key;
+ summaryview->sort_type = item->sort_type;
+ }
/* Threading */
summaryview->threaded = item->threaded;
summaryview->thread_collapsed = item->thread_collapsed;