GSList *mlist);
static void summary_set_header (SummaryView *summaryview,
gchar *text[],
- MsgInfo *msginfo,
- gboolean *free_from);
+ MsgInfo *msginfo);
static void summary_display_msg (SummaryView *summaryview,
GtkCTreeNode *row);
static void summary_display_msg_full (SummaryView *summaryview,
gconstpointer ptr1,
gconstpointer ptr2);
-static void news_flag_crosspost (MsgInfo *msginfo);
-
static void quicksearch_execute_cb (QuickSearch *quicksearch,
gpointer data);
static void tog_searchbar_cb (GtkWidget *w,
if (!summaryview->mainwin)
return FALSE;
-
+START_TIMING("--------- summary_show");
summaryview->last_displayed = NULL;
summary_switch_from_to(summaryview, item);
} else {
summary_unlock(summaryview);
inc_unlock();
+ END_TIMING();
return FALSE;
}
if (changed || !quicksearch_is_active(summaryview->quicksearch))
summaryview->folderview,
summaryview->folder_item);
main_window_cursor_normal(summaryview->mainwin);
- }
+ }
+ END_TIMING();
return TRUE;
}
g_free(buf);
summary_unlock(summaryview);
inc_unlock();
summary_show(summaryview, summaryview->folder_item);
+ END_TIMING();
return FALSE;
}
g_slist_free(mlist);
main_window_cursor_normal(summaryview->mainwin);
summary_unlock(summaryview);
inc_unlock();
-
+ END_TIMING();
return TRUE;
}
void summary_select_parent(SummaryView *summaryview)
{
- GtkCTreeNode *node;
+ GtkCTreeNode *node = NULL;
if (summaryview->selected)
node = GTK_CTREE_ROW(summaryview->selected)->parent;
GTK_EVENTS_FLUSH();
summary_unlock(summaryview);
gtk_widget_grab_focus(GTK_WIDGET(ctree));
- if (GTK_CTREE_ROW(node) == NULL) {
- g_warning("crash avoidance hack 1\n");
- return;
- }
- if (((GtkCListRow *)(GTK_CTREE_ROW(node)))->state < GTK_STATE_NORMAL
- || ((GtkCListRow *)(GTK_CTREE_ROW(node)))->state > GTK_STATE_INSENSITIVE) {
- g_warning("crash avoidance hack 2\n");
- return;
- }
gtk_ctree_node_moveto(ctree, node, 0, 0.5, 0);
}
- summary_unselect_all(summaryview);
if (display_msg && summaryview->displayed == node)
summaryview->displayed = NULL;
summaryview->display_msg = display_msg;
msginfo = gtk_ctree_node_get_row_data(ctree, node);
- if (msginfo && msginfo->folder && msginfo->folder->folder &&
- msginfo->folder->folder->klass->type == F_NEWS)
- news_flag_crosspost(msginfo);
-
if (MSG_IS_DELETED(msginfo->flags))
summaryview->deleted++;
gtk_label_set_text(GTK_LABEL(summaryview->statlabel_folder), "");
gtk_label_set_text(GTK_LABEL(summaryview->statlabel_select), "");
gtk_label_set_text(GTK_LABEL(summaryview->statlabel_msgs), "");
+ toolbar_main_set_sensitive(summaryview->mainwin);
return;
}
to_human_readable(n_size));
gtk_label_set_text(GTK_LABEL(summaryview->statlabel_msgs), str);
g_free(str);
+ toolbar_main_set_sensitive(summaryview->mainwin);
}
static void summary_set_column_titles(SummaryView *summaryview)
gint *col_pos = summaryview->col_pos;
const gchar *msgid = msginfo->msgid;
GHashTable *msgid_table = summaryview->msgid_table;
- gboolean free_from = FALSE;
- summary_set_header(summaryview, text, msginfo, &free_from);
+ summary_set_header(summaryview, text, msginfo);
gtk_sctree_set_node_info(ctree, cnode, text[col_pos[S_COL_SUBJECT]], 2,
NULL, NULL, NULL, NULL, FALSE, summaryview->threaded && !summaryview->thread_collapsed);
if (summaryview->col_state[summaryview->col_pos[S_COL_TO]].visible)
SET_TEXT(S_COL_TO);
- if (free_from) {
- g_free(text[col_pos[S_COL_FROM]]);
- text[col_pos[S_COL_FROM]] = NULL;
- }
-
#undef SET_TEXT
GTKUT_CTREE_NODE_SET_ROW_DATA(cnode, msginfo);
END_TIMING();
} else {
gchar *text[N_SUMMARY_COLS];
- gboolean free_from = FALSE;
gint *col_pos = summaryview->col_pos;
START_TIMING("summaryview_set_ctree_from_list(2)");
cur = mlist;
for (; mlist != NULL; mlist = mlist->next) {
msginfo = (MsgInfo *)mlist->data;
- summary_set_header(summaryview, text, msginfo, &free_from);
+ summary_set_header(summaryview, text, msginfo);
node = gtk_sctree_insert_node
(ctree, NULL, node, text, 2,
NULL, NULL, NULL, NULL,
FALSE, FALSE);
- if (free_from) {
- g_free(text[col_pos[S_COL_FROM]]);
- text[col_pos[S_COL_FROM]] = NULL;
- }
+
GTKUT_CTREE_NODE_SET_ROW_DATA(node, msginfo);
summary_set_marks_func(ctree, node, summaryview);
}
static void summary_set_header(SummaryView *summaryview, gchar *text[],
- MsgInfo *msginfo, gboolean *free_from)
+ MsgInfo *msginfo)
{
static gchar date_modified[80];
static gchar col_score[11];
else
text[col_pos[S_COL_NUMBER]] = "";
+ /* slow! */
if (summaryview->col_state[summaryview->col_pos[S_COL_SIZE]].visible)
text[col_pos[S_COL_SIZE]] = to_human_readable(msginfo->size);
else
else
text[col_pos[S_COL_SCORE]] = "";
+ /* slow! */
if (summaryview->col_state[summaryview->col_pos[S_COL_DATE]].visible) {
if (msginfo->date_t) {
procheader_date_get_localtime(date_modified,
text[col_pos[S_COL_TO]] = to_text;
if (!should_swap) {
text[col_pos[S_COL_FROM]] = from_text;
- *free_from = FALSE;
} else {
- gchar *tmp = NULL;
- tmp = g_strconcat("-->", to_text, NULL);
+ gchar tmp[BUFFSIZE];
+ snprintf(tmp, BUFFSIZE-1, "--> %s", to_text);
+ tmp[BUFFSIZE-1]='\0';
text[col_pos[S_COL_FROM]] = tmp;
- *free_from = TRUE;
}
if (summaryview->simplify_subject_preg != NULL)
val = messageview_show(msgview, msginfo, all_headers);
if (GTK_CLIST(msgview->mimeview->ctree)->row_list == NULL)
gtk_widget_grab_focus(summaryview->ctree);
- gtkut_ctree_node_move_if_on_the_edge(ctree, row);
+ gtkut_ctree_node_move_if_on_the_edge(ctree, row,
+ GTK_CLIST(summaryview->ctree)->focus_row);
}
if (val == 0 && MSG_IS_UNREAD(msginfo->flags)) {
GtkWidget *account_rules_skip;
GtkWidget *account_rules_force;
GtkWidget *account_rules_user_current;
- GSList *group;
AlertValue val;
vbox = gtk_vbox_new (FALSE, 0);
return summary_cmp_by_date(clist, ptr1, ptr2);
}
-static void news_flag_crosspost(MsgInfo *msginfo)
-{
- GString *line;
- gpointer key;
- gpointer value;
- Folder *mff;
-
- g_return_if_fail(msginfo != NULL);
- g_return_if_fail(msginfo->folder != NULL);
- g_return_if_fail(msginfo->folder->folder != NULL);
- mff = msginfo->folder->folder;
- g_return_if_fail(mff->klass->type == F_NEWS);
-
- if (mff->account->mark_crosspost_read) {
- line = g_string_sized_new(128);
- g_string_printf(line, "%s:%d", msginfo->folder->path, msginfo->msgnum);
- debug_print("nfcp: checking <%s>", line->str);
- if (mff->newsart &&
- g_hash_table_lookup_extended(mff->newsart, line->str, &key, &value)) {
- debug_print(" <%s>", (gchar *)value);
- if (MSG_IS_NEW(msginfo->flags) || MSG_IS_UNREAD(msginfo->flags)) {
- summary_msginfo_change_flags(msginfo,
- mff->account->crosspost_col, 0, MSG_NEW | MSG_UNREAD, 0);
- }
- g_hash_table_remove(mff->newsart, key);
- g_free(key);
- }
- g_string_free(line, TRUE);
- debug_print("\n");
- }
-}
-
static void summary_ignore_thread_func(GtkCTree *ctree, GtkCTreeNode *row, gpointer data)
{
SummaryView *summaryview = (SummaryView *) data;