GTK_SIGNAL_FUNC (summary_drag_data_get),
summaryview);
- gtk_clist_thaw(GTK_CLIST(ctree));
+ gtk_clist_thaw(GTK_CLIST(ctree));
/* sort before */
sort_mode = prefs_folder_item_get_sort_mode(item);
node = summary_find_msg_by_msgnum(summaryview, msgnum);
if (node) {
+ GTK_EVENTS_FLUSH();
+ gtk_ctree_node_moveto(ctree, node, -1, 0.5, 0);
+ gtk_widget_grab_focus(GTK_WIDGET(ctree));
gtk_sctree_unselect_all(GTK_SCTREE(ctree));
gtk_sctree_select(GTK_SCTREE(ctree), node);
- if (summaryview->displayed == node)
- summaryview->displayed = NULL;
- summary_display_msg(summaryview, node, FALSE);
+ if (summaryview->msg_is_toggled_on) {
+ if (summaryview->displayed == node)
+ summaryview->displayed = NULL;
+ summary_display_msg(summaryview, node, FALSE);
+ }
}
}
msginfo = (MsgInfo *)mlist->data;
parent = NULL;
+ summary_set_header(text, msginfo);
+
/* search parent node for threading */
if (msginfo->inreplyto && *msginfo->inreplyto) {
parent = g_hash_table_lookup
(subject_table, msginfo->subject);
}
- summary_set_header(text, msginfo);
-
node = gtk_ctree_insert_node
(ctree, parent, NULL, text, 2,
NULL, NULL, NULL, NULL, FALSE, TRUE);
text[S_COL_MARK] = NULL;
text[S_COL_UNREAD] = NULL;
- text[S_COL_MIME] = NULL;
+ text[S_COL_MIME] = NULL;
text[S_COL_NUMBER] = itos_buf(col_number, msginfo->msgnum);
text[S_COL_SIZE] = to_human_readable(msginfo->size);
#if 0
}
g_free(filename);
+ if (MSG_IS_NEW(msginfo->flags))
+ summaryview->newmsgs--;
+ if (MSG_IS_UNREAD(msginfo->flags))
+ summaryview->unread--;
+ if (MSG_IS_NEW(msginfo->flags) || MSG_IS_UNREAD(msginfo->flags)) {
+ MSG_UNSET_FLAGS(msginfo->flags, MSG_NEW | MSG_UNREAD);
+
+ CHANGE_FLAGS(msginfo);
+
+ summary_set_row_marks(summaryview, row);
+ gtk_clist_thaw(GTK_CLIST(ctree));
+ summary_status_show(summaryview);
+ }
+
+ if (GTK_WIDGET_VISIBLE(summaryview->headerwin->window))
if (new_window) {
MessageView *msgview;
gtkut_ctree_node_move_if_on_the_edge(ctree, row);
}
- if (MSG_IS_NEW(msginfo->flags))
- summaryview->newmsgs--;
- if (MSG_IS_UNREAD(msginfo->flags))
- summaryview->unread--;
- if (MSG_IS_NEW(msginfo->flags) || MSG_IS_UNREAD(msginfo->flags)) {
- MSG_UNSET_FLAGS(msginfo->flags, MSG_NEW | MSG_UNREAD);
-
- CHANGE_FLAGS(msginfo);
-
- summary_set_row_marks(summaryview, row);
- gtk_clist_thaw(GTK_CLIST(ctree));
- summary_status_show(summaryview);
- }
-
- if (GTK_WIDGET_VISIBLE(summaryview->headerwin->window))
header_window_show(summaryview->headerwin, msginfo);
lock = FALSE;
gpointer data)
{
MsgInfo *msginfo;
- GtkCTreeNode *parent;
+ GtkCTreeNode *parent = NULL;
SummaryView * summaryview = (SummaryView *) data;
GHashTable *msgid_table = summaryview->msgid_table;
msginfo = GTKUT_CTREE_NODE_GET_ROW_DATA(node);
- if (!msginfo || !msginfo->inreplyto) return;
+ if (!msginfo) return;
- parent = g_hash_table_lookup(msgid_table, msginfo->inreplyto);
+ if(msginfo->inreplyto) {
+ parent = g_hash_table_lookup(msgid_table, msginfo->inreplyto);
+ }
if (parent == NULL && msginfo->subject) {
parent = subject_table_lookup(subject_table, msginfo->subject);
}
#define BREAK_ON_MODIFIER_KEY() \
if ((event->state & (GDK_MOD1_MASK|GDK_CONTROL_MASK)) != 0) break
+#define KEY_PRESS_EVENT_STOP() \
+ if (gtk_signal_n_emissions_by_name \
+ (GTK_OBJECT(ctree), "key_press_event") > 0) { \
+ gtk_signal_emit_stop_by_name(GTK_OBJECT(ctree), \
+ "key_press_event"); \
+ }
+
static void summary_key_pressed(GtkWidget *widget, GdkEventKey *event,
SummaryView *summaryview)
{
case GDK_g: /* Go */
case GDK_G:
BREAK_ON_MODIFIER_KEY();
-
- if (gtk_signal_n_emissions_by_name
- (GTK_OBJECT(ctree), "key_press_event") > 0)
- gtk_signal_emit_stop_by_name(GTK_OBJECT(ctree),
- "key_press_event");
-
+ KEY_PRESS_EVENT_STOP();
to_folder = foldersel_folder_sel(NULL);
if (to_folder) {
debug_print(_("Go to %s\n"), to_folder->path);
return;
case GDK_w: /* Write new message */
BREAK_ON_MODIFIER_KEY();
- if (summaryview->folder_item)
- compose_new(summaryview->folder_item->folder->account);
- else
+ if (summaryview->folder_item) {
+ PrefsAccount *ac;
+ ac = summaryview->folder_item->folder->account;
+ if (ac && ac->protocol == A_NNTP)
+ compose_new_with_recipient
+ (ac, summaryview->folder_item->path);
+ else
+ compose_new(ac);
+ } else
compose_new(NULL);
return;
case GDK_D: /* Empty trash */
BREAK_ON_MODIFIER_KEY();
- if (gtk_signal_n_emissions_by_name
- (GTK_OBJECT(ctree), "key_press_event") > 0)
- gtk_signal_emit_stop_by_name(GTK_OBJECT(ctree),
- "key_press_event");
+ KEY_PRESS_EVENT_STOP();
main_window_empty_trash(summaryview->mainwin, TRUE);
return;
case GDK_Q: /* Quit */
case GDK_x: /* Execute */
case GDK_X:
BREAK_ON_MODIFIER_KEY();
+ KEY_PRESS_EVENT_STOP();
summary_execute(summaryview);
break;
case GDK_a: /* Reply to the message */
}
}
+#undef BREAK_ON_MODIFIER_KEY
+#undef KEY_PRESS_EVENT_STOP
+
static void summary_open_row(GtkSCTree *sctree, SummaryView *summaryview)
{
if (summaryview->folder_item->stype == F_DRAFT)