2005-07-25 [paul] 1.9.13cvs2
[claws.git] / src / summaryview.c
index c646a1cd82823ad80638a7a6222f9952c6126008..7273db7f728642271ea19100443276cbf0c600b0 100644 (file)
@@ -888,13 +888,6 @@ gboolean summary_show(SummaryView *summaryview, FolderItem *item)
 
        main_window_cursor_wait(summaryview->mainwin);
 
-/*
-       mlist = item->folder->get_msg_list(item->folder, item, !update_cache);
-
-       !!! NEW !!!
-       USE LIST FROM CACHE, WILL NOT DISPLAY ANY MESSAGES DROPED
-       BY OTHER PROGRAMS TO THE FOLDER
-*/
        mlist = folder_item_get_msg_list(item);
 
        if (summaryview->folder_item->hide_read_msgs) {
@@ -1031,7 +1024,9 @@ gboolean summary_show(SummaryView *summaryview, FolderItem *item)
                                            TRUE);
                        summary_lock(summaryview);
                } else {
-                       summary_select_node(summaryview, node, FALSE, TRUE);
+                       summary_unlock(summaryview);
+                       summary_select_node(summaryview, node, prefs_common.always_show_msg, TRUE);
+                       summary_lock(summaryview);
                }
        }
 
@@ -1052,6 +1047,7 @@ gboolean summary_show(SummaryView *summaryview, FolderItem *item)
 
 #undef CURRENTLY_DISPLAYED
 
+
 void summary_clear_list(SummaryView *summaryview)
 {
        GtkCList *clist = GTK_CLIST(summaryview->ctree);
@@ -1406,7 +1402,7 @@ void summary_select_next_new(SummaryView *summaryview)
                val = alertpanel(_("No more new messages"),
                                 _("No new message found. "
                                   "Go to next folder?"),
-                                GTK_STOCK_YES, _("Search again"),
+                                GTK_STOCK_YES, _("_Search again"),
                                 GTK_STOCK_NO);
                if (val == G_ALERTDEFAULT) {
                        g_signal_stop_emission_by_name(G_OBJECT(ctree),"key_press_event");
@@ -2541,7 +2537,6 @@ gboolean summary_step(SummaryView *summaryview, GtkScrollType type)
        GtkCTreeNode *node;
 
        if (summary_is_locked(summaryview)) return FALSE;
-
        if (type == GTK_SCROLL_STEP_FORWARD) {
                node = gtkut_ctree_node_next(ctree, summaryview->selected);
                if (node)
@@ -2762,7 +2757,6 @@ static void summary_mark_row(SummaryView *summaryview, GtkCTreeNode *row)
                summaryview->moved--;
        if (MSG_IS_COPY(msginfo->flags))
                summaryview->copied--;
-       procmsg_update_unread_children (msginfo, TRUE);
 
        procmsg_msginfo_set_to_folder(msginfo, NULL);
        procmsg_msginfo_unset_flags(msginfo, MSG_DELETED, MSG_MOVE | MSG_COPY);
@@ -3018,7 +3012,6 @@ static void summary_delete_row(SummaryView *summaryview, GtkCTreeNode *row)
                summaryview->moved--;
        if (MSG_IS_COPY(msginfo->flags))
                summaryview->copied--;
-       procmsg_update_unread_children (msginfo, FALSE);
 
        procmsg_msginfo_set_to_folder(msginfo, NULL);
        procmsg_msginfo_unset_flags(msginfo, MSG_MARKED, MSG_MOVE | MSG_COPY);
@@ -3111,7 +3104,7 @@ void summary_delete(SummaryView *summaryview)
        if (!node)
                node = summary_find_prev_msg(summaryview, sel_last);
 
-       summary_select_node(summaryview, node, FALSE, FALSE);
+       summary_select_node(summaryview, node, prefs_common.always_show_msg, TRUE);
        
        if (prefs_common.immediate_exec || item->stype == F_TRASH) {
                summary_execute(summaryview);
@@ -3152,7 +3145,6 @@ static void summary_unmark_row(SummaryView *summaryview, GtkCTreeNode *row)
                summaryview->moved--;
        if (MSG_IS_COPY(msginfo->flags))
                summaryview->copied--;
-       procmsg_update_unread_children (msginfo, FALSE);
 
        procmsg_msginfo_set_to_folder(msginfo, NULL);
        procmsg_msginfo_unset_flags(msginfo, MSG_MARKED | MSG_DELETED, MSG_MOVE | MSG_COPY);
@@ -3242,7 +3234,7 @@ void summary_move_selected_to(SummaryView *summaryview, FolderItem *to_folder)
                GtkCTreeNode *node = gtk_ctree_node_nth (GTK_CTREE(summaryview->ctree), 
                                                         GTK_CLIST(summaryview->ctree)->rows - 1);
                if (node)
-                       summary_select_node(summaryview, node, TRUE, TRUE);
+                       summary_select_node(summaryview, node, prefs_common.always_show_msg, TRUE);
        }
 
 }
@@ -3431,10 +3423,10 @@ void summary_save_as(SummaryView *summaryview)
 
        if ( aval==0 ) { /* append */
                if (append_file(src, dest, TRUE) < 0) 
-                       alertpanel_error(_("Can't save the file `%s'."), tmp);
+                       alertpanel_error(_("Can't save the file '%s'."), tmp);
        } else { /* overwrite */
                if (copy_file(src, dest, TRUE) < 0)
-                       alertpanel_error(_("Can't save the file `%s'."), tmp);
+                       alertpanel_error(_("Can't save the file '%s'."), tmp);
        }
        g_free(src);
        
@@ -3449,7 +3441,7 @@ void summary_save_as(SummaryView *summaryview)
                        if (!msginfo) break;
                        src = procmsg_get_message_file(msginfo);
                        if (append_file(src, dest, TRUE) < 0)
-                               alertpanel_error(_("Can't save the file `%s'."), tmp);
+                               alertpanel_error(_("Can't save the file '%s'."), tmp);
                }
                g_free(src);
        }
@@ -3475,12 +3467,12 @@ void summary_print(SummaryView *summaryview)
 #ifndef USE_GNOMEPRINT
        cmdline = input_dialog(_("Print"),
                               _("Enter the print command line:\n"
-                                "(`%s' will be replaced with file name)"),
+                                "('%s' will be replaced with file name)"),
                               prefs_common.print_cmd);
        if (!cmdline) return;
        if (!(p = strchr(cmdline, '%')) || *(p + 1) != 's' ||
            strchr(p + 2, '%')) {
-               alertpanel_error(_("Print command line is invalid:\n`%s'"),
+               alertpanel_error(_("Print command line is invalid:\n'%s'"),
                                 cmdline);
                g_free(cmdline);
                return;
@@ -3536,12 +3528,9 @@ gboolean summary_execute(SummaryView *summaryview)
                summary_unthread_for_exec(summaryview);
 
        folder_item_update_freeze();
-       gtk_clist_freeze(GTK_CLIST(summaryview->ctree));
        summary_execute_move(summaryview);
        summary_execute_copy(summaryview);
        summary_execute_delete(summaryview);
-       folder_item_update_thaw();
-       gtk_clist_thaw(GTK_CLIST(summaryview->ctree));
        
        node = GTK_CTREE_NODE(clist->row_list);
        for (; node != NULL; node = next) {
@@ -3569,15 +3558,24 @@ gboolean summary_execute(SummaryView *summaryview)
                gtk_ctree_remove_node(ctree, node);
        }
 
+       folder_item_update_thaw();
+       gtk_clist_thaw(GTK_CLIST(summaryview->ctree));
+
        if (new_selected) {
+               summary_unlock(summaryview);
                gtk_sctree_select
                        (GTK_SCTREE(ctree),
                         summaryview->displayed ? summaryview->displayed
                         : new_selected);
+               summary_lock(summaryview);
        }
 
-       if (summaryview->threaded)
+       if (summaryview->threaded) {
+               gtk_clist_freeze(GTK_CLIST(summaryview->ctree));
                summary_thread_build(summaryview);
+               summary_thread_init(summaryview);
+               gtk_clist_thaw(GTK_CLIST(summaryview->ctree));
+       }
 
        summaryview->selected = clist->selection ?
                GTK_CTREE_NODE(clist->selection->data) : NULL;
@@ -3594,8 +3592,6 @@ gboolean summary_execute(SummaryView *summaryview)
 
        gtk_ctree_node_moveto(ctree, summaryview->selected, -1, 0.5, 0);
 
-       gtk_clist_thaw(clist);
-
        summary_unlock(summaryview);
        return TRUE;
 }
@@ -4626,8 +4622,9 @@ static void summary_selected(GtkCTree *ctree, GtkCTreeNode *row,
        MsgInfo *msginfo;
        gboolean marked_unread = FALSE;
 
-       if (summary_is_locked(summaryview))
+       if (summary_is_locked(summaryview)) {
                return;
+       }
 
        summary_status_show(summaryview);