2007-11-20 [colin] 3.1.0cvs11
[claws.git] / src / mainwindow.c
index 66d1af0285d4e397883114c26be74acc9a586560..eb2338063914b525fefbad2a9b878f239077495a 100644 (file)
@@ -1229,15 +1229,34 @@ static void mainwindow_tags_menu_item_apply_tags_activate_cb(GtkWidget *widget,
        tag_apply_open(summary_get_selection(mainwin->summaryview));    
 }
 
+static gint mainwin_tag_cmp_list(gconstpointer a, gconstpointer b)
+{
+       gint id_a = GPOINTER_TO_INT(a);
+       gint id_b = GPOINTER_TO_INT(b);
+       const gchar *tag_a = tags_get_tag(id_a);
+       const gchar *tag_b = tags_get_tag(id_b);
+       
+               
+       if (tag_a == NULL)
+               return tag_b == NULL ? 0:1;
+       
+       if (tag_b == NULL)
+               return tag_a == NULL ? 0:1;
+       return g_utf8_collate(tag_a, tag_b);
+}
+
 static void mainwindow_tags_menu_create(MainWindow *mainwin, gboolean refresh)
 {
        GtkWidget *label_menuitem;
        GtkWidget *menu;
        GtkWidget *item;
        GSList *cur = tags_get_list();
-       GSList *orig = cur;
+       GSList *orig = NULL;
        gboolean existing_tags = FALSE;
 
+       cur = orig = g_slist_sort(cur, mainwin_tag_cmp_list);
+
        label_menuitem = gtk_item_factory_get_item(mainwin->menu_factory,
                                                   "/Message/Tags");
        g_signal_connect(G_OBJECT(label_menuitem), "activate",
@@ -4022,7 +4041,9 @@ static void process_cb(MainWindow *mainwin, guint action, GtkWidget *widget)
        FolderItem *item = mainwin->summaryview->folder_item;   
        g_return_if_fail(item != NULL);
 
+       item->processing_pending = TRUE;
        folder_item_apply_processing(item);     
+       item->processing_pending = FALSE;
 }
 
 static void execute_summary_cb(MainWindow *mainwin, guint action,
@@ -4217,7 +4238,8 @@ static void prefs_actions_open_cb(MainWindow *mainwin, guint action,
 static void prefs_tags_open_cb(MainWindow *mainwin, guint action,
                                  GtkWidget *widget)
 {
-       prefs_tags_open(mainwin);
+       GSList * list = summary_get_selected_msg_list(mainwin->summaryview);
+       tag_apply_open(list);
 }
 #if (defined(USE_OPENSSL) || defined (USE_GNUTLS))
 static void ssl_manager_open_cb(MainWindow *mainwin, guint action,