if (summaryview->sort_key == SORT_BY_NONE)
return;
- if(cmp_func != NULL) {
+ if (cmp_func != NULL) {
debug_print("Sorting summary...");
STATUSBAR_PUSH(summaryview->mainwin, _("Sorting summary..."));
main_window_cursor_wait(summaryview->mainwin);
+ gtk_clist_freeze(clist);
gtk_clist_set_compare_func(clist, cmp_func);
gtk_clist_set_sort_type(clist, (GtkSortType)sort_type);
if (summaryview->threaded)
summary_thread_init(summaryview);
+
+ gtk_clist_thaw(clist);
debug_print("done.\n");
STATUSBAR_POP(summaryview->mainwin);
GtkCTreeNode *next;
GtkCTreeNode *parent;
MsgInfo *msginfo;
+ GSList *reflist;
summary_lock(summaryview);
parent = NULL;
- /* alfons - claws seems to prefer subject threading before
- * inreplyto threading. we should look more deeply in this,
- * because inreplyto should have precedence... */
if (msginfo && msginfo->inreplyto) {
parent = g_hash_table_lookup(summaryview->msgid_table,
msginfo->inreplyto);
+
+ if (!parent && msginfo->references) {
+ for (reflist = msginfo->references;
+ reflist != NULL; reflist = reflist->next)
+ if ((parent = g_hash_table_lookup
+ (summaryview->msgid_table,
+ reflist->data)))
+ break;
+ }
}
if (prefs_common.thread_by_subject && parent == NULL) {
case GDK_Escape:
gtk_widget_grab_focus(summaryview->folderview->ctree);
return TRUE;
- case GDK_Up:
- case GDK_Down:
- if ((node = summaryview->selected) != NULL) {
- GtkCTreeNode *next = NULL;
- do {
- next = (event->keyval == GDK_Down)
- ? gtkut_ctree_node_next(ctree, next ? next:node)
- : gtkut_ctree_node_prev(ctree, next ? next:node);
- } while (next && !gtk_ctree_is_viewable(ctree, next));
-
- if (next) {
- gtk_sctree_select_with_state
- (GTK_SCTREE(ctree), next, event->state);
-
- /* Deprecated - what are the non-deprecated equivalents? */
- if (gtk_ctree_node_is_visible(GTK_CTREE(ctree), next) != GTK_VISIBILITY_FULL)
- gtk_ctree_node_moveto(GTK_CTREE(ctree), next, 0, 0, 0);
- summaryview->selected = next;
- }
- }
- return TRUE;
case GDK_Home:
case GDK_End:
if ((node = summaryview->selected) != NULL) {