2011-07-03 [paul] 3.7.9cvs28
[claws.git] / src / summaryview.c
index 0f98e62384103d6f3a1ebee7203ff40d2b3c5ffe..0128ed6ca2702c076c638b941feaa005649d7b3a 100644 (file)
@@ -1,6 +1,6 @@
 /*
  * Sylpheed -- a GTK+ based, lightweight, and fast e-mail client
- * Copyright (C) 1999-2009 Hiroyuki Yamamoto and the Claws Mail team
+ * Copyright (C) 1999-2011 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
@@ -539,6 +539,7 @@ SummaryView *summary_create(MainWindow *mainwin)
        toggle_search = gtk_toggle_button_new();
        gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(toggle_search),
                                     prefs_common.show_searchbar);
+       gtkut_widget_set_can_focus(toggle_search, FALSE);
        gtk_widget_show(toggle_search);
 
        CLAWS_SET_TIP(toggle_search, _("Toggle quick search bar"));
@@ -1642,7 +1643,7 @@ void summary_set_menu_sensitive(SummaryView *summaryview)
 
                {"Menus/SummaryViewPopup/Move"                  , M_TARGET_EXIST|M_ALLOW_DELETE|M_NOT_NEWS},
                {"Menus/SummaryViewPopup/Copy"                  , M_TARGET_EXIST|M_EXEC},
-               {"Menus/SummaryViewPopup/Trash"         , M_TARGET_EXIST|M_ALLOW_DELETE|M_NOT_NEWS},
+               {"Menus/SummaryViewPopup/Trash"         , M_TARGET_EXIST|M_ALLOW_DELETE|M_NOT_NEWS|M_NOT_TRASH},
 #ifndef GENERIC_UMPC
                {"Menus/SummaryViewPopup/Delete"                        , M_TARGET_EXIST|M_ALLOW_DELETE},
 #endif
@@ -2056,6 +2057,30 @@ void summary_select_by_msgnum(SummaryView *summaryview, guint msgnum)
        summary_select_node(summaryview, node, FALSE, TRUE);
 }
 
+void summary_select_by_msg_list(SummaryView    *summaryview, GSList *msginfos)
+{
+       GtkCMCTree *ctree;
+       GSList *msgnum_list, *walk;
+       gboolean froze = FALSE;
+
+       ctree = GTK_CMCTREE(summaryview->ctree);
+
+       msgnum_list = NULL;
+       for(walk = msginfos; walk; walk = walk->next) {
+               MsgInfo *msginfo;
+               msginfo = walk->data;
+               msgnum_list = g_slist_prepend(msgnum_list, GUINT_TO_POINTER(msginfo->msgnum));
+       }
+       START_LONG_OPERATION(summaryview, FALSE);
+       for(walk = msgnum_list; walk; walk = walk->next) {
+               GtkCMCTreeNode *node;
+               node = summary_find_msg_by_msgnum(summaryview, GPOINTER_TO_UINT(walk->data));
+               gtk_cmctree_select(ctree, node);
+       }
+       END_LONG_OPERATION(summaryview);
+       g_slist_free(msgnum_list);
+}
+
 typedef struct _PostponedSelectData
 {
        GtkCMCTree *ctree;
@@ -2517,10 +2542,7 @@ static void summary_status_show(SummaryView *summaryview)
 
        if (n_selected) {
                sel = g_strdup_printf(" (%s)", to_human_readable((goffset)sel_size));
-               if (n_selected == 1)
-                       itstr = g_strdup(_(" item selected"));
-               else
-                       itstr = g_strdup(_(" items selected"));
+               itstr = g_strdup_printf(ngettext(" item selected"," items selected", n_selected));
        } else {
                sel = g_strdup("");
                itstr = g_strdup("");
@@ -6295,8 +6317,8 @@ static GtkWidget *summary_ctree_create(SummaryView *summaryview)
        g_object_set_data(G_OBJECT(ctree), "summaryview", (gpointer)summaryview); 
 
        for (pos = 0; pos < N_SUMMARY_COLS; pos++) {
-               GTK_WIDGET_UNSET_FLAGS(GTK_CMCLIST(ctree)->column[pos].button,
-                                      GTK_CAN_FOCUS);
+               gtkut_widget_set_can_focus(GTK_CMCLIST(ctree)->column[pos].button,
+                                      FALSE);
                if (((pos == summaryview->col_pos[S_COL_FROM] && !FOLDER_SHOWS_TO_HDR(summaryview->folder_item)) ||
                     (pos == summaryview->col_pos[S_COL_TO] && FOLDER_SHOWS_TO_HDR(summaryview->folder_item)) ||
                     pos == summaryview->col_pos[S_COL_DATE]) && vert &&
@@ -6474,11 +6496,8 @@ static gboolean summary_button_pressed(GtkWidget *ctree, GdkEventButton *event,
        if (!event) return FALSE;
 
        if (event->button == 3) {
-               summaryview->display_msg = messageview_is_visible(summaryview->messageview);
                /* right clicked */
                summary_set_menu_sensitive(summaryview);
-               cm_menu_set_sensitive_full(summaryview->mainwin->ui_manager, "Menus/SummaryViewPopup/Trash", 
-                       !folder_has_parent_of_type(summaryview->folder_item, F_TRASH) && summaryview->selected);
                gtk_menu_popup(GTK_MENU(summaryview->popupmenu), NULL, NULL,
                               NULL, NULL, event->button, event->time);
        } else if (event->button == 2) {