2009-01-30 [paul] 3.7.0cvs46
[claws.git] / src / summaryview.c
index c3f6265f937b794ba5a9c25b7512d643b695bb25..9721c6c84d0dcc54cd529e32248ae69fe9de6f6d 100644 (file)
@@ -1,6 +1,6 @@
 /*
  * Sylpheed -- a GTK+ based, lightweight, and fast e-mail client
- * Copyright (C) 1999-2008 Hiroyuki Yamamoto and the Claws Mail team
+ * Copyright (C) 1999-2009 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
@@ -22,7 +22,6 @@
 #include <glib.h>
 #include <glib/gi18n.h>
 #include <gdk/gdkkeysyms.h>
-#include <gtk/gtkscrolledwindow.h>
 #include <gtk/gtk.h>
 
 #include <stdio.h>
@@ -90,44 +89,26 @@ static GtkStyle *small_style;
 static GtkStyle *small_marked_style;
 static GtkStyle *small_deleted_style;
 
-static GdkPixmap *markxpm;
-static GdkBitmap *markxpmmask;
-static GdkPixmap *deletedxpm;
-static GdkBitmap *deletedxpmmask;
-static GdkPixmap *movedxpm;
-static GdkBitmap *movedxpmmask;
-static GdkPixmap *copiedxpm;
-static GdkBitmap *copiedxpmmask;
-
-static GdkPixmap *newxpm;
-static GdkBitmap *newxpmmask;
-static GdkPixmap *unreadxpm;
-static GdkBitmap *unreadxpmmask;
-static GdkPixmap *repliedxpm;
-static GdkBitmap *repliedxpmmask;
-static GdkPixmap *forwardedxpm;
-static GdkBitmap *forwardedxpmmask;
-static GdkPixmap *ignorethreadxpm;
-static GdkBitmap *ignorethreadxpmmask;
-static GdkPixmap *watchthreadxpm;
-static GdkBitmap *watchthreadxpmmask;
-static GdkPixmap *lockedxpm;
-static GdkBitmap *lockedxpmmask;
-static GdkPixmap *spamxpm;
-static GdkBitmap *spamxpmmask;
-
-static GdkPixmap *clipxpm;
-static GdkBitmap *clipxpmmask;
-static GdkPixmap *keyxpm;
-static GdkBitmap *keyxpmmask;
-static GdkPixmap *clipkeyxpm;
-static GdkBitmap *clipkeyxpmmask;
-static GdkPixmap *keysignxpm;
-static GdkBitmap *keysignxpmmask;
-static GdkPixmap *gpgsignedxpm;
-static GdkBitmap *gpgsignedxpmmask;
-static GdkPixmap *clipgpgsignedxpm;
-static GdkBitmap *clipgpgsignedxpmmask;
+static GdkPixbuf *markxpm;
+static GdkPixbuf *deletedxpm;
+static GdkPixbuf *movedxpm;
+static GdkPixbuf *copiedxpm;
+
+static GdkPixbuf *newxpm;
+static GdkPixbuf *unreadxpm;
+static GdkPixbuf *repliedxpm;
+static GdkPixbuf *forwardedxpm;
+static GdkPixbuf *ignorethreadxpm;
+static GdkPixbuf *watchthreadxpm;
+static GdkPixbuf *lockedxpm;
+static GdkPixbuf *spamxpm;
+
+static GdkPixbuf *clipxpm;
+static GdkPixbuf *keyxpm;
+static GdkPixbuf *clipkeyxpm;
+static GdkPixbuf *keysignxpm;
+static GdkPixbuf *gpgsignedxpm;
+static GdkPixbuf *clipgpgsignedxpm;
 
 static void summary_free_msginfo_func  (GtkCMCTree             *ctree,
                                         GtkCMCTreeNode         *node,
@@ -296,26 +277,6 @@ static void summary_col_resized            (GtkCMCList             *clist,
                                         gint                    column,
                                         gint                    width,
                                         SummaryView            *summaryview);
-static void summary_reply_cb           (SummaryView            *summaryview,
-                                        guint                   action,
-                                        GtkWidget              *widget);
-#ifndef GENERIC_UMPC
-static void summary_show_all_header_cb (SummaryView            *summaryview,
-                                        guint                   action,
-                                        GtkWidget              *widget);
-
-static void summary_add_address_cb     (SummaryView            *summaryview,
-                                        guint                   action,
-                                        GtkWidget              *widget);
-#endif
-static void summary_create_filter_cb   (SummaryView            *summaryview,
-                                        guint                   action,
-                                        GtkWidget              *widget);
-#ifndef GENERIC_UMPC
-static void summary_create_processing_cb(SummaryView           *summaryview,
-                                        guint                   action,
-                                        GtkWidget              *widget);
-#endif
 static void summary_mark_clicked       (GtkWidget              *button,
                                         SummaryView            *summaryview);
 static void summary_status_clicked     (GtkWidget              *button,
@@ -447,149 +408,19 @@ GtkTargetEntry summary_drag_types[2] =
        }                                                               \
 }
 
-static void summary_menu_cb(GtkAction *action, gpointer data)
-{
-       SummaryView *summaryview = (SummaryView *)data;
-       const gchar *a_name = gtk_action_get_name(action);
-       
-       DO_ACTION("SummaryViewPopup/Reply", summary_reply_cb(summaryview, COMPOSE_REPLY, NULL));
-#ifndef GENERIC_UMPC
-       DO_ACTION("SummaryViewPopup/ReplyTo/All", summary_reply_cb(summaryview, COMPOSE_REPLY_TO_ALL, NULL));
-       DO_ACTION("SummaryViewPopup/ReplyTo/Sender", summary_reply_cb(summaryview, COMPOSE_REPLY_TO_SENDER, NULL));
-       DO_ACTION("SummaryViewPopup/ReplyTo/MailingList", summary_reply_cb(summaryview, COMPOSE_REPLY_TO_LIST, NULL));
-#endif
-       DO_ACTION("SummaryViewPopup/Forward", summary_reply_cb(summaryview, COMPOSE_FORWARD_INLINE, NULL));
-#ifndef GENERIC_UMPC
-       DO_ACTION("SummaryViewPopup/ForwardAsAtt", summary_reply_cb(summaryview, COMPOSE_FORWARD_AS_ATTACH, NULL));
-       DO_ACTION("SummaryViewPopup/Redirect", summary_reply_cb(summaryview, COMPOSE_REDIRECT, NULL));
-#endif
-       DO_ACTION("SummaryViewPopup/Move", summary_move_to(summaryview));
-       DO_ACTION("SummaryViewPopup/Copy", summary_copy_to(summaryview));
-       DO_ACTION("SummaryViewPopup/Trash", summary_delete_trash(summaryview));
-#ifndef GENERIC_UMPC
-       DO_ACTION("SummaryViewPopup/Delete", summary_delete(summaryview));
-#endif
-       DO_ACTION("SummaryViewPopup/Mark/Mark", summary_mark(summaryview));
-       DO_ACTION("SummaryViewPopup/Mark/Unmark", summary_unmark(summaryview));
-       DO_ACTION("SummaryViewPopup/Mark/MarkUnread", summary_mark_as_unread(summaryview));
-       DO_ACTION("SummaryViewPopup/Mark/MarkRead", summary_mark_as_read(summaryview));
-       DO_ACTION("SummaryViewPopup/Mark/MarkAllRead", summary_mark_all_read(summaryview));
-       DO_ACTION("SummaryViewPopup/Mark/IgnoreThread", summary_ignore_thread(summaryview));
-       DO_ACTION("SummaryViewPopup/Mark/UnignoreThread", summary_unignore_thread(summaryview));
-       DO_ACTION("SummaryViewPopup/Mark/WatchThread", summary_watch_thread(summaryview));
-       DO_ACTION("SummaryViewPopup/Mark/UnwatchThread", summary_unwatch_thread(summaryview));
-       DO_ACTION("SummaryViewPopup/Mark/MarkSpam", summary_mark_as_spam(summaryview, 1, NULL));
-       DO_ACTION("SummaryViewPopup/Mark/MarkHam", summary_mark_as_spam(summaryview, 0, NULL));
-       DO_ACTION("SummaryViewPopup/Mark/Lock", summary_msgs_lock(summaryview));
-       DO_ACTION("SummaryViewPopup/Mark/Unlock", summary_msgs_unlock(summaryview));
-#ifndef GENERIC_UMPC
-       DO_ACTION("SummaryViewPopup/AddSenderToAB", summary_add_address_cb(summaryview, 0, 0)); 
-#endif
-       DO_ACTION("SummaryViewPopup/CreateFilterRule/Automatically", summary_create_filter_cb(summaryview, FILTER_BY_AUTO, NULL)); 
-       DO_ACTION("SummaryViewPopup/CreateFilterRule/ByFrom", summary_create_filter_cb(summaryview, FILTER_BY_FROM, NULL)); 
-       DO_ACTION("SummaryViewPopup/CreateFilterRule/ByTo", summary_create_filter_cb(summaryview, FILTER_BY_TO, NULL)); 
-       DO_ACTION("SummaryViewPopup/CreateFilterRule/BySubject", summary_create_filter_cb(summaryview, FILTER_BY_SUBJECT, NULL)); 
-#ifndef GENERIC_UMPC
-       DO_ACTION("SummaryViewPopup/CreateProcessingRule/Automatically", summary_create_processing_cb(summaryview, FILTER_BY_AUTO, NULL)); 
-       DO_ACTION("SummaryViewPopup/CreateProcessingRule/ByFrom", summary_create_processing_cb(summaryview, FILTER_BY_FROM, NULL)); 
-       DO_ACTION("SummaryViewPopup/CreateProcessingRule/ByTo", summary_create_processing_cb(summaryview, FILTER_BY_TO, NULL)); 
-       DO_ACTION("SummaryViewPopup/CreateProcessingRule/BySubject", summary_create_processing_cb(summaryview, FILTER_BY_SUBJECT, NULL)); 
-#endif
-       DO_ACTION("SummaryViewPopup/View/OpenInNewWindow", summary_open_msg(summaryview)); 
-       DO_ACTION("SummaryViewPopup/View/MessageSource", summary_view_source(summaryview)); 
-       DO_ACTION("SummaryViewPopup/SaveAs", summary_save_as(summaryview)); 
-#ifndef GENERIC_UMPC
-       DO_ACTION("SummaryViewPopup/Print", summary_print(summaryview)); 
-#endif
-#ifndef GENERIC_UMPC
-       DO_ACTION("SummaryViewPopup/View/AllHeaders", summary_show_all_header_cb(summaryview, 0, 0)); 
-#endif
-}
-
 static GtkActionEntry summary_popup_entries[] =
 {
        {"SummaryViewPopup",                            NULL, "SummaryViewPopup" },
-       {"SummaryViewPopup/Reply",                      NULL, N_("_Reply"), "<control>R", NULL, G_CALLBACK(summary_menu_cb) },
-#ifndef GENERIC_UMPC
        {"SummaryViewPopup/ReplyTo",                    NULL, "Repl_y to" },
-       {"SummaryViewPopup/ReplyTo/All",                NULL, N_("_all"), "<shift><control>R", NULL, G_CALLBACK(summary_menu_cb) },
-       {"SummaryViewPopup/ReplyTo/Sender",             NULL, N_("_sender"), NULL, NULL, G_CALLBACK(summary_menu_cb) },
-       {"SummaryViewPopup/ReplyTo/MailingList",        NULL, N_("_mailing list"), "<control>L", NULL, G_CALLBACK(summary_menu_cb) },
-       {"SummaryViewPopup/---",                        NULL, "---", NULL, NULL, NULL },
-#endif
-
-       {"SummaryViewPopup/Forward",                    NULL, N_("_Forward"), "<control><alt>F", NULL, G_CALLBACK(summary_menu_cb) }, /* inline */
-#ifndef GENERIC_UMPC
-       {"SummaryViewPopup/ForwardAsAtt",               NULL, N_("For_ward as attachment"), NULL, NULL, G_CALLBACK(summary_menu_cb) }, /* as attach */
-       {"SummaryViewPopup/Redirect",                   NULL, N_("Redirect"), NULL, NULL, G_CALLBACK(summary_menu_cb) }, 
-#endif
-       /* separation */
-       {"SummaryViewPopup/Move",                       NULL, N_("M_ove..."), "<control>O", NULL, G_CALLBACK(summary_menu_cb) }, 
-       {"SummaryViewPopup/Copy",                       NULL, N_("_Copy..."), "<shift><control>O", NULL, G_CALLBACK(summary_menu_cb) }, 
-       {"SummaryViewPopup/Trash",                      NULL, N_("Move to _trash"), "<control>D", NULL, G_CALLBACK(summary_menu_cb) }, 
-#ifndef GENERIC_UMPC
-       {"SummaryViewPopup/Delete",                     NULL, N_("_Delete..."), NULL, NULL, G_CALLBACK(summary_menu_cb) },
-#endif
-       /* separation */
        {"SummaryViewPopup/Mark",                       NULL, "_Mark" },
-       {"SummaryViewPopup/Mark/Mark",                  NULL, N_("_Mark"), NULL, NULL, G_CALLBACK(summary_menu_cb) },
-       {"SummaryViewPopup/Mark/Unmark",                NULL, N_("_Unmark"), NULL, NULL, G_CALLBACK(summary_menu_cb) },
-       {"SummaryViewPopup/Mark/---",                   NULL, "---", NULL, NULL, NULL },
-
-       {"SummaryViewPopup/Mark/MarkUnread",            NULL, N_("Mark as unr_ead"), NULL, NULL, G_CALLBACK(summary_menu_cb) },
-       {"SummaryViewPopup/Mark/MarkRead",              NULL, N_("Mark as rea_d"), NULL, NULL, G_CALLBACK(summary_menu_cb) },
-       {"SummaryViewPopup/Mark/MarkAllRead",           NULL, N_("Mark all read"), NULL, NULL, G_CALLBACK(summary_menu_cb) },
-       {"SummaryViewPopup/Mark/IgnoreThread",          NULL, N_("Ignore thread"), NULL, NULL, G_CALLBACK(summary_menu_cb) },
-       {"SummaryViewPopup/Mark/UnignoreThread",        NULL, N_("Unignore thread"), NULL, NULL, G_CALLBACK(summary_menu_cb) },
-       {"SummaryViewPopup/Mark/WatchThread",           NULL, N_("Watch thread"), NULL, NULL, G_CALLBACK(summary_menu_cb) },
-       {"SummaryViewPopup/Mark/UnwatchThread",         NULL, N_("Unwatch thread"), NULL, NULL, G_CALLBACK(summary_menu_cb) },
-       /* separation */
-
-       {"SummaryViewPopup/Mark/MarkSpam",              NULL, N_("Mark as spam"), NULL, NULL, G_CALLBACK(summary_menu_cb) },
-       {"SummaryViewPopup/Mark/MarkHam",               NULL, N_("Mark as ham"), NULL, NULL, G_CALLBACK(summary_menu_cb) },
-       /* separation */
-
-       {"SummaryViewPopup/Mark/Lock",                  NULL, N_("Lock"), NULL, NULL, G_CALLBACK(summary_menu_cb) },
-       {"SummaryViewPopup/Mark/Unlock",                NULL, N_("Unlock"), NULL, NULL, G_CALLBACK(summary_menu_cb) },
-
        {"SummaryViewPopup/ColorLabel",                 NULL, "Color la_bel" },
        {"SummaryViewPopup/Tags",                       NULL, "Ta_gs" },
-
-       /* separation */
+       {"SummaryViewPopup/CreateFilterRule",           NULL, "Create _filter rule" },
 #ifndef GENERIC_UMPC
-       {"SummaryViewPopup/AddSenderToAB",                      NULL, N_("Add sender to address boo_k"), NULL, NULL, G_CALLBACK(summary_menu_cb) }, 
+       {"SummaryViewPopup/CreateProcessingRule",       NULL, "Create processing rule" },
 #endif
-       {"SummaryViewPopup/CreateFilterRule",                   NULL, N_("Create f_ilter rule") },
-       {"SummaryViewPopup/CreateFilterRule/Automatically",     NULL, N_("_Automatically"), NULL, NULL, G_CALLBACK(summary_menu_cb) }, 
-       {"SummaryViewPopup/CreateFilterRule/ByFrom",            NULL, N_("By _From"), NULL, NULL, G_CALLBACK(summary_menu_cb) }, 
-       {"SummaryViewPopup/CreateFilterRule/ByTo",              NULL, N_("By _To"), NULL, NULL, G_CALLBACK(summary_menu_cb) }, 
-       {"SummaryViewPopup/CreateFilterRule/BySubject",         NULL, N_("By _Subject"), NULL, NULL, G_CALLBACK(summary_menu_cb) }, 
-
-#ifndef GENERIC_UMPC
-       {"SummaryViewPopup/CreateProcessingRule",                       NULL, N_("Create processing rule") },
-       {"SummaryViewPopup/CreateProcessingRule/Automatically", NULL, N_("_Automatically"), NULL, NULL, G_CALLBACK(summary_menu_cb) }, 
-       {"SummaryViewPopup/CreateProcessingRule/ByFrom",                NULL, N_("By _From"), NULL, NULL, G_CALLBACK(summary_menu_cb) }, 
-       {"SummaryViewPopup/CreateProcessingRule/ByTo",          NULL, N_("By _To"), NULL, NULL, G_CALLBACK(summary_menu_cb) }, 
-       {"SummaryViewPopup/CreateProcessingRule/BySubject",             NULL, N_("By _Subject"), NULL, NULL, G_CALLBACK(summary_menu_cb) }, 
-
-#endif
-       /* separation */
        {"SummaryViewPopup/View",                       NULL, "_View" },
-       {"SummaryViewPopup/View/OpenInNewWindow",       NULL, N_("Open in new _window"), "<control><alt>N", NULL, G_CALLBACK(summary_menu_cb) }, 
-       {"SummaryViewPopup/View/MessageSource",         NULL, N_("Message _source"), "<control>U", NULL, G_CALLBACK(summary_menu_cb) }, 
-       /* separation */
-       {"SummaryViewPopup/SaveAs",                     NULL, N_("_Save as..."), "<control>S", NULL, G_CALLBACK(summary_menu_cb) }, 
-#ifndef GENERIC_UMPC
-       {"SummaryViewPopup/Print",                      NULL, N_("Print..."), "<control>P", NULL, G_CALLBACK(summary_menu_cb) }, 
-#endif
-};  /* see also list in menu_connect_identical_items() in menu.c if this changes */
-
-#ifndef GENERIC_UMPC
-static GtkToggleActionEntry summary_popup_toggleentries[] =
-{
-       {"SummaryViewPopup/View/AllHeaders",            NULL, N_("All _headers"), "<control>H", NULL, G_CALLBACK(summary_menu_cb) }, 
 };
-#endif
 
 static const gchar *const col_label[N_SUMMARY_COLS] = {
        "",             /* S_COL_MARK    */
@@ -656,7 +487,7 @@ GtkWidget *summary_get_main_widget(SummaryView *summaryview)
                summary_update_msg, (gpointer) summaryview);    \
 }
 
-SummaryView *summary_create(void)
+SummaryView *summary_create(MainWindow *mainwin)
 {
        SummaryView *summaryview;
        GtkWidget *vbox;
@@ -803,97 +634,97 @@ SummaryView *summary_create(void)
                          G_CALLBACK(tog_searchbar_cb), summaryview);
 
        /* create popup menu */
-       summaryview->action_group = cm_menu_create_action_group("SummaryViewPopup", summary_popup_entries,
+       
+       gtk_action_group_add_actions(mainwin->action_group, summary_popup_entries,
                        G_N_ELEMENTS(summary_popup_entries), (gpointer)summaryview);
+
+       MENUITEM_ADDUI_MANAGER(mainwin->ui_manager, "/", "Menus", "Menus", GTK_UI_MANAGER_MENUBAR)
+       MENUITEM_ADDUI_MANAGER(mainwin->ui_manager, "/Menus", "SummaryViewPopup", "SummaryViewPopup", GTK_UI_MANAGER_MENU)
+       MENUITEM_ADDUI_MANAGER(mainwin->ui_manager, "/Menus/SummaryViewPopup", "Reply", "Message/Reply", GTK_UI_MANAGER_MENUITEM)
 #ifndef GENERIC_UMPC
-       gtk_action_group_add_toggle_actions(summaryview->action_group, summary_popup_toggleentries,
-                       G_N_ELEMENTS(summary_popup_toggleentries), (gpointer)summaryview);
+       MENUITEM_ADDUI_MANAGER(mainwin->ui_manager, "/Menus/SummaryViewPopup", "ReplyTo", "SummaryViewPopup/ReplyTo", GTK_UI_MANAGER_MENU)
+       MENUITEM_ADDUI_MANAGER(mainwin->ui_manager, "/Menus/SummaryViewPopup", "Separator1", "Message/---", GTK_UI_MANAGER_SEPARATOR)
 #endif
-
-       MENUITEM_ADDUI("/Menus", "SummaryViewPopup", "SummaryViewPopup", GTK_UI_MANAGER_MENU)
-       MENUITEM_ADDUI("/Menus/SummaryViewPopup", "Reply", "SummaryViewPopup/Reply", GTK_UI_MANAGER_MENUITEM)
-       MENUITEM_ADDUI("/Menus/SummaryViewPopup", "ReplyTo", "SummaryViewPopup/ReplyTo", GTK_UI_MANAGER_MENU)
-       MENUITEM_ADDUI("/Menus/SummaryViewPopup", "Separator1", "SummaryViewPopup/---", GTK_UI_MANAGER_SEPARATOR)
-       MENUITEM_ADDUI("/Menus/SummaryViewPopup", "Forward", "SummaryViewPopup/Forward", GTK_UI_MANAGER_MENUITEM)
+       MENUITEM_ADDUI_MANAGER(mainwin->ui_manager, "/Menus/SummaryViewPopup", "Forward", "Message/Forward", GTK_UI_MANAGER_MENUITEM)
 #ifndef GENERIC_UMPC
-       MENUITEM_ADDUI("/Menus/SummaryViewPopup", "ForwardAsAtt", "SummaryViewPopup/ForwardAsAtt", GTK_UI_MANAGER_MENUITEM)
-       MENUITEM_ADDUI("/Menus/SummaryViewPopup", "Redirect", "SummaryViewPopup/Redirect", GTK_UI_MANAGER_MENUITEM)
+       MENUITEM_ADDUI_MANAGER(mainwin->ui_manager, "/Menus/SummaryViewPopup", "ForwardAtt", "Message/ForwardAtt", GTK_UI_MANAGER_MENUITEM)
+       MENUITEM_ADDUI_MANAGER(mainwin->ui_manager, "/Menus/SummaryViewPopup", "Redirect", "Message/Redirect", GTK_UI_MANAGER_MENUITEM)
 #endif
-       MENUITEM_ADDUI("/Menus/SummaryViewPopup", "Separator2", "SummaryViewPopup/---", GTK_UI_MANAGER_SEPARATOR)
-       MENUITEM_ADDUI("/Menus/SummaryViewPopup", "Move", "SummaryViewPopup/Move", GTK_UI_MANAGER_MENUITEM)
-       MENUITEM_ADDUI("/Menus/SummaryViewPopup", "Copy", "SummaryViewPopup/Copy", GTK_UI_MANAGER_MENUITEM)
-       MENUITEM_ADDUI("/Menus/SummaryViewPopup", "Trash", "SummaryViewPopup/Trash", GTK_UI_MANAGER_MENUITEM)
+       MENUITEM_ADDUI_MANAGER(mainwin->ui_manager, "/Menus/SummaryViewPopup", "Separator2", "Message/---", GTK_UI_MANAGER_SEPARATOR)
+       MENUITEM_ADDUI_MANAGER(mainwin->ui_manager, "/Menus/SummaryViewPopup", "Move", "Message/Move", GTK_UI_MANAGER_MENUITEM)
+       MENUITEM_ADDUI_MANAGER(mainwin->ui_manager, "/Menus/SummaryViewPopup", "Copy", "Message/Copy", GTK_UI_MANAGER_MENUITEM)
+       MENUITEM_ADDUI_MANAGER(mainwin->ui_manager, "/Menus/SummaryViewPopup", "Trash", "Message/Trash", GTK_UI_MANAGER_MENUITEM)
 #ifndef GENERIC_UMPC
-       MENUITEM_ADDUI("/Menus/SummaryViewPopup", "Delete", "SummaryViewPopup/Delete", GTK_UI_MANAGER_MENUITEM)
+       MENUITEM_ADDUI_MANAGER(mainwin->ui_manager, "/Menus/SummaryViewPopup", "Delete", "Message/Delete", GTK_UI_MANAGER_MENUITEM)
 #endif
-       MENUITEM_ADDUI("/Menus/SummaryViewPopup", "Separator3", "SummaryViewPopup/---", GTK_UI_MANAGER_SEPARATOR)
-       MENUITEM_ADDUI("/Menus/SummaryViewPopup", "Mark", "SummaryViewPopup/Mark", GTK_UI_MANAGER_MENU)
-       MENUITEM_ADDUI("/Menus/SummaryViewPopup", "ColorLabel", "SummaryViewPopup/ColorLabel", GTK_UI_MANAGER_MENU)
-       MENUITEM_ADDUI("/Menus/SummaryViewPopup", "Tags", "SummaryViewPopup/Tags", GTK_UI_MANAGER_MENU)
+       MENUITEM_ADDUI_MANAGER(mainwin->ui_manager, "/Menus/SummaryViewPopup", "Separator3", "Message/---", GTK_UI_MANAGER_SEPARATOR)
+       MENUITEM_ADDUI_MANAGER(mainwin->ui_manager, "/Menus/SummaryViewPopup", "Mark", "SummaryViewPopup/Mark", GTK_UI_MANAGER_MENU)
+       MENUITEM_ADDUI_MANAGER(mainwin->ui_manager, "/Menus/SummaryViewPopup", "ColorLabel", "SummaryViewPopup/ColorLabel", GTK_UI_MANAGER_MENU)
+       MENUITEM_ADDUI_MANAGER(mainwin->ui_manager, "/Menus/SummaryViewPopup", "Tags", "SummaryViewPopup/Tags", GTK_UI_MANAGER_MENU)
 
-       MENUITEM_ADDUI("/Menus/SummaryViewPopup", "Separator4", "SummaryViewPopup/---", GTK_UI_MANAGER_SEPARATOR)
+       MENUITEM_ADDUI_MANAGER(mainwin->ui_manager, "/Menus/SummaryViewPopup", "Separator4", "Message/---", GTK_UI_MANAGER_SEPARATOR)
 #ifndef GENERIC_UMPC
-       MENUITEM_ADDUI("/Menus/SummaryViewPopup", "AddSenderToAB", "SummaryViewPopup/AddSenderToAB", GTK_UI_MANAGER_MENUITEM)
+       MENUITEM_ADDUI_MANAGER(mainwin->ui_manager, "/Menus/SummaryViewPopup", "AddSenderToAB", "Tools/AddSenderToAB", GTK_UI_MANAGER_MENUITEM)
 #endif
-       MENUITEM_ADDUI("/Menus/SummaryViewPopup", "CreateFilterRule", "SummaryViewPopup/CreateFilterRule", GTK_UI_MANAGER_MENU)
+       MENUITEM_ADDUI_MANAGER(mainwin->ui_manager, "/Menus/SummaryViewPopup", "CreateFilterRule", "SummaryViewPopup/CreateFilterRule", GTK_UI_MANAGER_MENU)
 #ifndef GENERIC_UMPC
-       MENUITEM_ADDUI("/Menus/SummaryViewPopup", "CreateProcessingRule", "SummaryViewPopup/CreateProcessingRule", GTK_UI_MANAGER_MENU)
+       MENUITEM_ADDUI_MANAGER(mainwin->ui_manager, "/Menus/SummaryViewPopup", "CreateProcessingRule", "SummaryViewPopup/CreateProcessingRule", GTK_UI_MANAGER_MENU)
 #endif
-       MENUITEM_ADDUI("/Menus/SummaryViewPopup", "Separator5", "SummaryViewPopup/---", GTK_UI_MANAGER_SEPARATOR)
-       MENUITEM_ADDUI("/Menus/SummaryViewPopup", "View", "SummaryViewPopup/View", GTK_UI_MANAGER_MENU)
-       MENUITEM_ADDUI("/Menus/SummaryViewPopup", "SaveAs", "SummaryViewPopup/SaveAs", GTK_UI_MANAGER_MENUITEM)
+       MENUITEM_ADDUI_MANAGER(mainwin->ui_manager, "/Menus/SummaryViewPopup", "Separator5", "Tools/---", GTK_UI_MANAGER_SEPARATOR)
+       MENUITEM_ADDUI_MANAGER(mainwin->ui_manager, "/Menus/SummaryViewPopup", "View", "SummaryViewPopup/View", GTK_UI_MANAGER_MENU)
+       MENUITEM_ADDUI_MANAGER(mainwin->ui_manager, "/Menus/SummaryViewPopup", "SaveAs", "File/SaveAs", GTK_UI_MANAGER_MENUITEM)
 #ifndef GENERIC_UMPC
-       MENUITEM_ADDUI("/Menus/SummaryViewPopup", "Print", "SummaryViewPopup/Print", GTK_UI_MANAGER_MENUITEM)
+       MENUITEM_ADDUI_MANAGER(mainwin->ui_manager, "/Menus/SummaryViewPopup", "Print", "File/Print", GTK_UI_MANAGER_MENUITEM)
 #endif
        /* last separator, for plugins */
-       MENUITEM_ADDUI("/Menus/SummaryViewPopup", "Separator6", "SummaryViewPopup/---", GTK_UI_MANAGER_SEPARATOR)
+       MENUITEM_ADDUI_MANAGER(mainwin->ui_manager, "/Menus/SummaryViewPopup", "Separator6", "File/---", GTK_UI_MANAGER_SEPARATOR)
 
        /* submenus - replyto */
-       MENUITEM_ADDUI("/Menus/SummaryViewPopup/ReplyTo", "All", "SummaryViewPopup/ReplyTo/All", GTK_UI_MANAGER_MENUITEM)
-       MENUITEM_ADDUI("/Menus/SummaryViewPopup/ReplyTo", "Sender", "SummaryViewPopup/ReplyTo/Sender", GTK_UI_MANAGER_MENUITEM)
-       MENUITEM_ADDUI("/Menus/SummaryViewPopup/ReplyTo", "MailingList", "SummaryViewPopup/ReplyTo/MailingList", GTK_UI_MANAGER_MENUITEM)
+       MENUITEM_ADDUI_MANAGER(mainwin->ui_manager, "/Menus/SummaryViewPopup/ReplyTo", "All", "Message/ReplyTo/All", GTK_UI_MANAGER_MENUITEM)
+       MENUITEM_ADDUI_MANAGER(mainwin->ui_manager, "/Menus/SummaryViewPopup/ReplyTo", "Sender", "Message/ReplyTo/Sender", GTK_UI_MANAGER_MENUITEM)
+       MENUITEM_ADDUI_MANAGER(mainwin->ui_manager, "/Menus/SummaryViewPopup/ReplyTo", "MailingList", "Message/ReplyTo/List", GTK_UI_MANAGER_MENUITEM)
 
        /* submenus - mark */
-       MENUITEM_ADDUI("/Menus/SummaryViewPopup/Mark", "Mark", "SummaryViewPopup/Mark/Mark", GTK_UI_MANAGER_MENUITEM)
-       MENUITEM_ADDUI("/Menus/SummaryViewPopup/Mark", "Unmark", "SummaryViewPopup/Mark/Unmark", GTK_UI_MANAGER_MENUITEM)
-       MENUITEM_ADDUI("/Menus/SummaryViewPopup/Mark", "Separator1", "SummaryViewPopup/Mark/---", GTK_UI_MANAGER_SEPARATOR)
-       MENUITEM_ADDUI("/Menus/SummaryViewPopup/Mark", "MarkUnread", "SummaryViewPopup/Mark/MarkUnread", GTK_UI_MANAGER_MENUITEM)
-       MENUITEM_ADDUI("/Menus/SummaryViewPopup/Mark", "MarkRead", "SummaryViewPopup/Mark/MarkRead", GTK_UI_MANAGER_MENUITEM)
-       MENUITEM_ADDUI("/Menus/SummaryViewPopup/Mark", "MarkAllRead", "SummaryViewPopup/Mark/MarkAllRead", GTK_UI_MANAGER_MENUITEM)
-       MENUITEM_ADDUI("/Menus/SummaryViewPopup/Mark", "IgnoreThread", "SummaryViewPopup/Mark/IgnoreThread", GTK_UI_MANAGER_MENUITEM)
-       MENUITEM_ADDUI("/Menus/SummaryViewPopup/Mark", "UnignoreThread", "SummaryViewPopup/Mark/UnignoreThread", GTK_UI_MANAGER_MENUITEM)
-       MENUITEM_ADDUI("/Menus/SummaryViewPopup/Mark", "WatchThread", "SummaryViewPopup/Mark/WatchThread", GTK_UI_MANAGER_MENUITEM)
-       MENUITEM_ADDUI("/Menus/SummaryViewPopup/Mark", "UnwatchThread", "SummaryViewPopup/Mark/UnwatchThread", GTK_UI_MANAGER_MENUITEM)
-       MENUITEM_ADDUI("/Menus/SummaryViewPopup/Mark", "Separator2", "SummaryViewPopup/Mark/---", GTK_UI_MANAGER_SEPARATOR)
-       MENUITEM_ADDUI("/Menus/SummaryViewPopup/Mark", "MarkSpam", "SummaryViewPopup/Mark/MarkSpam", GTK_UI_MANAGER_MENUITEM)
-       MENUITEM_ADDUI("/Menus/SummaryViewPopup/Mark", "MarkHam", "SummaryViewPopup/Mark/MarkHam", GTK_UI_MANAGER_MENUITEM)
-       MENUITEM_ADDUI("/Menus/SummaryViewPopup/Mark", "Separator3", "SummaryViewPopup/Mark/---", GTK_UI_MANAGER_SEPARATOR)
-       MENUITEM_ADDUI("/Menus/SummaryViewPopup/Mark", "Lock", "SummaryViewPopup/Mark/Lock", GTK_UI_MANAGER_MENUITEM)
-       MENUITEM_ADDUI("/Menus/SummaryViewPopup/Mark", "Unlock", "SummaryViewPopup/Mark/Unlock", GTK_UI_MANAGER_MENUITEM)
+       MENUITEM_ADDUI_MANAGER(mainwin->ui_manager, "/Menus/SummaryViewPopup/Mark", "Mark", "Message/Mark/Mark", GTK_UI_MANAGER_MENUITEM)
+       MENUITEM_ADDUI_MANAGER(mainwin->ui_manager, "/Menus/SummaryViewPopup/Mark", "Unmark", "Message/Mark/Unmark", GTK_UI_MANAGER_MENUITEM)
+       MENUITEM_ADDUI_MANAGER(mainwin->ui_manager, "/Menus/SummaryViewPopup/Mark", "Separator1", "Message/Mark/---", GTK_UI_MANAGER_SEPARATOR)
+       MENUITEM_ADDUI_MANAGER(mainwin->ui_manager, "/Menus/SummaryViewPopup/Mark", "MarkUnread", "Message/Mark/MarkUnread", GTK_UI_MANAGER_MENUITEM)
+       MENUITEM_ADDUI_MANAGER(mainwin->ui_manager, "/Menus/SummaryViewPopup/Mark", "MarkRead", "Message/Mark/MarkRead", GTK_UI_MANAGER_MENUITEM)
+       MENUITEM_ADDUI_MANAGER(mainwin->ui_manager, "/Menus/SummaryViewPopup/Mark", "MarkAllRead", "Message/Mark/MarkAllRead", GTK_UI_MANAGER_MENUITEM)
+       MENUITEM_ADDUI_MANAGER(mainwin->ui_manager, "/Menus/SummaryViewPopup/Mark", "IgnoreThread", "Message/Mark/IgnoreThread", GTK_UI_MANAGER_MENUITEM)
+       MENUITEM_ADDUI_MANAGER(mainwin->ui_manager, "/Menus/SummaryViewPopup/Mark", "UnignoreThread", "Message/Mark/UnignoreThread", GTK_UI_MANAGER_MENUITEM)
+       MENUITEM_ADDUI_MANAGER(mainwin->ui_manager, "/Menus/SummaryViewPopup/Mark", "WatchThread", "Message/Mark/WatchThread", GTK_UI_MANAGER_MENUITEM)
+       MENUITEM_ADDUI_MANAGER(mainwin->ui_manager, "/Menus/SummaryViewPopup/Mark", "UnwatchThread", "Message/Mark/UnwatchThread", GTK_UI_MANAGER_MENUITEM)
+       MENUITEM_ADDUI_MANAGER(mainwin->ui_manager, "/Menus/SummaryViewPopup/Mark", "Separator2", "Message/Mark/---", GTK_UI_MANAGER_SEPARATOR)
+       MENUITEM_ADDUI_MANAGER(mainwin->ui_manager, "/Menus/SummaryViewPopup/Mark", "MarkSpam", "Message/Mark/MarkSpam", GTK_UI_MANAGER_MENUITEM)
+       MENUITEM_ADDUI_MANAGER(mainwin->ui_manager, "/Menus/SummaryViewPopup/Mark", "MarkHam", "Message/Mark/MarkHam", GTK_UI_MANAGER_MENUITEM)
+       MENUITEM_ADDUI_MANAGER(mainwin->ui_manager, "/Menus/SummaryViewPopup/Mark", "Separator3", "Message/Mark/---", GTK_UI_MANAGER_SEPARATOR)
+       MENUITEM_ADDUI_MANAGER(mainwin->ui_manager, "/Menus/SummaryViewPopup/Mark", "Lock", "Message/Mark/Lock", GTK_UI_MANAGER_MENUITEM)
+       MENUITEM_ADDUI_MANAGER(mainwin->ui_manager, "/Menus/SummaryViewPopup/Mark", "Unlock", "Message/Mark/Unlock", GTK_UI_MANAGER_MENUITEM)
 
        /* submenus - colorlabel and tags are dynamic */
        /* submenus - createfilterrule */
-       MENUITEM_ADDUI("/Menus/SummaryViewPopup/CreateFilterRule", "Automatically", "SummaryViewPopup/CreateFilterRule/Automatically", GTK_UI_MANAGER_MENUITEM)
-       MENUITEM_ADDUI("/Menus/SummaryViewPopup/CreateFilterRule", "ByFrom", "SummaryViewPopup/CreateFilterRule/ByFrom", GTK_UI_MANAGER_MENUITEM)
-       MENUITEM_ADDUI("/Menus/SummaryViewPopup/CreateFilterRule", "ByTo", "SummaryViewPopup/CreateFilterRule/ByTo", GTK_UI_MANAGER_MENUITEM)
-       MENUITEM_ADDUI("/Menus/SummaryViewPopup/CreateFilterRule", "BySubject", "SummaryViewPopup/CreateFilterRule/BySubject", GTK_UI_MANAGER_MENUITEM)
+       MENUITEM_ADDUI_MANAGER(mainwin->ui_manager, "/Menus/SummaryViewPopup/CreateFilterRule", "Automatically", "Tools/CreateFilterRule/Automatically", GTK_UI_MANAGER_MENUITEM)
+       MENUITEM_ADDUI_MANAGER(mainwin->ui_manager, "/Menus/SummaryViewPopup/CreateFilterRule", "ByFrom", "Tools/CreateFilterRule/ByFrom", GTK_UI_MANAGER_MENUITEM)
+       MENUITEM_ADDUI_MANAGER(mainwin->ui_manager, "/Menus/SummaryViewPopup/CreateFilterRule", "ByTo", "Tools/CreateFilterRule/ByTo", GTK_UI_MANAGER_MENUITEM)
+       MENUITEM_ADDUI_MANAGER(mainwin->ui_manager, "/Menus/SummaryViewPopup/CreateFilterRule", "BySubject", "Tools/CreateFilterRule/BySubject", GTK_UI_MANAGER_MENUITEM)
                
 #ifndef GENERIC_UMPC
        /* submenus - createprocessingrule */
-       MENUITEM_ADDUI("/Menus/SummaryViewPopup/CreateProcessingRule", "Automatically", "SummaryViewPopup/CreateProcessingRule/Automatically", GTK_UI_MANAGER_MENUITEM)
-       MENUITEM_ADDUI("/Menus/SummaryViewPopup/CreateProcessingRule", "ByFrom", "SummaryViewPopup/CreateProcessingRule/ByFrom", GTK_UI_MANAGER_MENUITEM)
-       MENUITEM_ADDUI("/Menus/SummaryViewPopup/CreateProcessingRule", "ByTo", "SummaryViewPopup/CreateProcessingRule/ByTo", GTK_UI_MANAGER_MENUITEM)
-       MENUITEM_ADDUI("/Menus/SummaryViewPopup/CreateProcessingRule", "BySubject", "SummaryViewPopup/CreateProcessingRule/BySubject", GTK_UI_MANAGER_MENUITEM)
+       MENUITEM_ADDUI_MANAGER(mainwin->ui_manager, "/Menus/SummaryViewPopup/CreateProcessingRule", "Automatically", "Tools/CreateProcessingRule/Automatically", GTK_UI_MANAGER_MENUITEM)
+       MENUITEM_ADDUI_MANAGER(mainwin->ui_manager, "/Menus/SummaryViewPopup/CreateProcessingRule", "ByFrom", "Tools/CreateProcessingRule/ByFrom", GTK_UI_MANAGER_MENUITEM)
+       MENUITEM_ADDUI_MANAGER(mainwin->ui_manager, "/Menus/SummaryViewPopup/CreateProcessingRule", "ByTo", "Tools/CreateProcessingRule/ByTo", GTK_UI_MANAGER_MENUITEM)
+       MENUITEM_ADDUI_MANAGER(mainwin->ui_manager, "/Menus/SummaryViewPopup/CreateProcessingRule", "BySubject", "Tools/CreateProcessingRule/BySubject", GTK_UI_MANAGER_MENUITEM)
 #endif
                
        /* submenus - view */
-       MENUITEM_ADDUI("/Menus/SummaryViewPopup/View", "OpenInNewWindow", "SummaryViewPopup/View/OpenInNewWindow", GTK_UI_MANAGER_MENUITEM)
-       MENUITEM_ADDUI("/Menus/SummaryViewPopup/View", "MessageSource", "SummaryViewPopup/View/MessageSource", GTK_UI_MANAGER_MENUITEM)
+       MENUITEM_ADDUI_MANAGER(mainwin->ui_manager, "/Menus/SummaryViewPopup/View", "OpenNewWindow", "View/OpenNewWindow", GTK_UI_MANAGER_MENUITEM)
+       MENUITEM_ADDUI_MANAGER(mainwin->ui_manager, "/Menus/SummaryViewPopup/View", "MessageSource", "View/MessageSource", GTK_UI_MANAGER_MENUITEM)
 #ifndef GENERIC_UMPC
-       MENUITEM_ADDUI("/Menus/SummaryViewPopup/View", "AllHeaders", "SummaryViewPopup/View/AllHeaders", GTK_UI_MANAGER_MENUITEM)
+       MENUITEM_ADDUI_MANAGER(mainwin->ui_manager, "/Menus/SummaryViewPopup/View", "AllHeaders", "View/AllHeaders", GTK_UI_MANAGER_MENUITEM)
 #endif         
        summaryview->popupmenu = gtk_menu_item_get_submenu(GTK_MENU_ITEM(
-                               gtk_ui_manager_get_widget(gtkut_ui_manager(), "/Menus/SummaryViewPopup")) );
+                               gtk_ui_manager_get_widget(mainwin->ui_manager, "/Menus/SummaryViewPopup")) );
 
 
        summaryview->vbox = vbox;
@@ -1081,42 +912,42 @@ void summary_init(SummaryView *summaryview)
        GtkWidget *pixmap;
 
        gtk_widget_realize(summaryview->ctree);
-       stock_pixmap_gdk(summaryview->ctree, STOCK_PIXMAP_MARK,
-                        &markxpm, &markxpmmask);
-       stock_pixmap_gdk(summaryview->ctree, STOCK_PIXMAP_DELETED,
-                        &deletedxpm, &deletedxpmmask);
-       stock_pixmap_gdk(summaryview->ctree, STOCK_PIXMAP_NEW,
-                        &newxpm, &newxpmmask);
-       stock_pixmap_gdk(summaryview->ctree, STOCK_PIXMAP_UNREAD,
-                        &unreadxpm, &unreadxpmmask);
-       stock_pixmap_gdk(summaryview->ctree, STOCK_PIXMAP_REPLIED,
-                        &repliedxpm, &repliedxpmmask);
-       stock_pixmap_gdk(summaryview->ctree, STOCK_PIXMAP_FORWARDED,
-                        &forwardedxpm, &forwardedxpmmask);
-       stock_pixmap_gdk(summaryview->ctree, STOCK_PIXMAP_CLIP,
-                        &clipxpm, &clipxpmmask);
-       stock_pixmap_gdk(summaryview->ctree, STOCK_PIXMAP_LOCKED,
-                        &lockedxpm, &lockedxpmmask);
-       stock_pixmap_gdk(summaryview->ctree, STOCK_PIXMAP_IGNORETHREAD,
-                        &ignorethreadxpm, &ignorethreadxpmmask);
-       stock_pixmap_gdk(summaryview->ctree, STOCK_PIXMAP_WATCHTHREAD,
-                        &watchthreadxpm, &watchthreadxpmmask);
-       stock_pixmap_gdk(summaryview->ctree, STOCK_PIXMAP_CLIP_KEY,
-                        &clipkeyxpm, &clipkeyxpmmask);
-       stock_pixmap_gdk(summaryview->ctree, STOCK_PIXMAP_KEY_SIGN,
-                        &keysignxpm, &keysignxpmmask);
-       stock_pixmap_gdk(summaryview->ctree, STOCK_PIXMAP_KEY,
-                        &keyxpm, &keyxpmmask);
-       stock_pixmap_gdk(summaryview->ctree, STOCK_PIXMAP_GPG_SIGNED,
-                        &gpgsignedxpm, &gpgsignedxpmmask);
-       stock_pixmap_gdk(summaryview->ctree, STOCK_PIXMAP_CLIP_GPG_SIGNED,
-                        &clipgpgsignedxpm, &clipgpgsignedxpmmask);
-       stock_pixmap_gdk(summaryview->ctree, STOCK_PIXMAP_SPAM,
-                        &spamxpm, &spamxpmmask);
-       stock_pixmap_gdk(summaryview->ctree, STOCK_PIXMAP_MOVED,
-                        &movedxpm, &movedxpmmask);
-       stock_pixmap_gdk(summaryview->ctree, STOCK_PIXMAP_COPIED,
-                        &copiedxpm, &copiedxpmmask);
+       stock_pixbuf_gdk(summaryview->ctree, STOCK_PIXMAP_MARK,
+                        &markxpm);
+       stock_pixbuf_gdk(summaryview->ctree, STOCK_PIXMAP_DELETED,
+                        &deletedxpm);
+       stock_pixbuf_gdk(summaryview->ctree, STOCK_PIXMAP_NEW,
+                        &newxpm);
+       stock_pixbuf_gdk(summaryview->ctree, STOCK_PIXMAP_UNREAD,
+                        &unreadxpm);
+       stock_pixbuf_gdk(summaryview->ctree, STOCK_PIXMAP_REPLIED,
+                        &repliedxpm);
+       stock_pixbuf_gdk(summaryview->ctree, STOCK_PIXMAP_FORWARDED,
+                        &forwardedxpm);
+       stock_pixbuf_gdk(summaryview->ctree, STOCK_PIXMAP_CLIP,
+                        &clipxpm);
+       stock_pixbuf_gdk(summaryview->ctree, STOCK_PIXMAP_LOCKED,
+                        &lockedxpm);
+       stock_pixbuf_gdk(summaryview->ctree, STOCK_PIXMAP_IGNORETHREAD,
+                        &ignorethreadxpm);
+       stock_pixbuf_gdk(summaryview->ctree, STOCK_PIXMAP_WATCHTHREAD,
+                        &watchthreadxpm);
+       stock_pixbuf_gdk(summaryview->ctree, STOCK_PIXMAP_CLIP_KEY,
+                        &clipkeyxpm);
+       stock_pixbuf_gdk(summaryview->ctree, STOCK_PIXMAP_KEY_SIGN,
+                        &keysignxpm);
+       stock_pixbuf_gdk(summaryview->ctree, STOCK_PIXMAP_KEY,
+                        &keyxpm);
+       stock_pixbuf_gdk(summaryview->ctree, STOCK_PIXMAP_GPG_SIGNED,
+                        &gpgsignedxpm);
+       stock_pixbuf_gdk(summaryview->ctree, STOCK_PIXMAP_CLIP_GPG_SIGNED,
+                        &clipgpgsignedxpm);
+       stock_pixbuf_gdk(summaryview->ctree, STOCK_PIXMAP_SPAM,
+                        &spamxpm);
+       stock_pixbuf_gdk(summaryview->ctree, STOCK_PIXMAP_MOVED,
+                        &movedxpm);
+       stock_pixbuf_gdk(summaryview->ctree, STOCK_PIXMAP_COPIED,
+                        &copiedxpm);
 
        summary_set_fonts(summaryview);
 
@@ -1139,8 +970,9 @@ void summary_init(SummaryView *summaryview)
        summaryview->sort_type = SORT_ASCENDING;
 
        /* Init summaryview extra data */
+#ifndef G_OS_WIN32
        summaryview->simplify_subject_preg = NULL;
-
+#endif
        summary_clear_list(summaryview);
        summary_set_column_titles(summaryview);
        summary_colorlabel_menu_create(summaryview, FALSE);
@@ -1778,61 +1610,61 @@ void summary_set_menu_sensitive(SummaryView *summaryview)
                gchar *const entry;
                SensitiveCond cond;
        } entry[] = {
-               {"SummaryViewPopup/Reply"                       , M_HAVE_ACCOUNT|M_TARGET_EXIST},
+               {"Menus/SummaryViewPopup/Reply"                 , M_HAVE_ACCOUNT|M_TARGET_EXIST},
 #ifndef GENERIC_UMPC
-               {"SummaryViewPopup/ReplyTo"                     , M_HAVE_ACCOUNT|M_TARGET_EXIST},
-               {"SummaryViewPopup/ReplyTo/All"         , M_HAVE_ACCOUNT|M_TARGET_EXIST},
-               {"SummaryViewPopup/ReplyTo/Sender"             , M_HAVE_ACCOUNT|M_TARGET_EXIST},
-               {"SummaryViewPopup/ReplyTo/MailingList"       , M_HAVE_ACCOUNT|M_TARGET_EXIST},
+               {"Menus/SummaryViewPopup/ReplyTo"                       , M_HAVE_ACCOUNT|M_TARGET_EXIST},
+               {"Menus/SummaryViewPopup/ReplyTo/All"           , M_HAVE_ACCOUNT|M_TARGET_EXIST},
+               {"Menus/SummaryViewPopup/ReplyTo/Sender"             , M_HAVE_ACCOUNT|M_TARGET_EXIST},
+               {"Menus/SummaryViewPopup/ReplyTo/MailingList"       , M_HAVE_ACCOUNT|M_TARGET_EXIST},
 #endif
 
-               {"SummaryViewPopup/Forward"                     , M_HAVE_ACCOUNT|M_TARGET_EXIST},
+               {"Menus/SummaryViewPopup/Forward"                       , M_HAVE_ACCOUNT|M_TARGET_EXIST},
 #ifndef GENERIC_UMPC
-               {"SummaryViewPopup/ForwardAsAtt"        , M_HAVE_ACCOUNT|M_TARGET_EXIST},
-               {"SummaryViewPopup/Redirect"                    , M_HAVE_ACCOUNT|M_TARGET_EXIST},
+               {"Menus/SummaryViewPopup/ForwardAtt"    , M_HAVE_ACCOUNT|M_TARGET_EXIST},
+               {"Menus/SummaryViewPopup/Redirect"                      , M_HAVE_ACCOUNT|M_TARGET_EXIST},
 #endif
 
-               {"SummaryViewPopup/Move"                        , M_TARGET_EXIST|M_ALLOW_DELETE|M_NOT_NEWS},
-               {"SummaryViewPopup/Copy"                        , M_TARGET_EXIST|M_EXEC},
-               {"SummaryViewPopup/Trash"               , M_TARGET_EXIST|M_ALLOW_DELETE|M_NOT_NEWS},
+               {"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},
 #ifndef GENERIC_UMPC
-               {"SummaryViewPopup/Delete"                      , M_TARGET_EXIST|M_ALLOW_DELETE},
+               {"Menus/SummaryViewPopup/Delete"                        , M_TARGET_EXIST|M_ALLOW_DELETE},
 #endif
 
-               {"SummaryViewPopup/Mark"                        , M_TARGET_EXIST},
-               {"SummaryViewPopup/Mark/Mark"                   , M_TARGET_EXIST},
-               {"SummaryViewPopup/Mark/Unmark"                 , M_TARGET_EXIST},
-               {"SummaryViewPopup/Mark/MarkUnread"     , M_TARGET_EXIST},
-               {"SummaryViewPopup/Mark/MarkRead"       , M_TARGET_EXIST},
-               {"SummaryViewPopup/Mark/MarkAllRead"    , M_TARGET_EXIST},
-               {"SummaryViewPopup/Mark/IgnoreThread"           , M_TARGET_EXIST},
-               {"SummaryViewPopup/Mark/UnignoreThread"         , M_TARGET_EXIST},
-               {"SummaryViewPopup/Mark/WatchThread"            , M_TARGET_EXIST},
-               {"SummaryViewPopup/Mark/UnwatchThread"          , M_TARGET_EXIST},
-               {"SummaryViewPopup/Mark/Unlock"                 , M_TARGET_EXIST},
-               {"SummaryViewPopup/Mark/Lock"                   , M_TARGET_EXIST},
-               {"SummaryViewPopup/Mark/MarkSpam"               , M_TARGET_EXIST|M_CAN_LEARN_SPAM},
-               {"SummaryViewPopup/Mark/MarkHam"                , M_TARGET_EXIST|M_CAN_LEARN_SPAM},
-               {"SummaryViewPopup/ColorLabel"                  , M_TARGET_EXIST},
-               {"SummaryViewPopup/Tags"                        , M_TARGET_EXIST},
+               {"Menus/SummaryViewPopup/Mark"                  , M_TARGET_EXIST},
+               {"Menus/SummaryViewPopup/Mark/Mark"             , M_TARGET_EXIST},
+               {"Menus/SummaryViewPopup/Mark/Unmark"                   , M_TARGET_EXIST},
+               {"Menus/SummaryViewPopup/Mark/MarkUnread"       , M_TARGET_EXIST},
+               {"Menus/SummaryViewPopup/Mark/MarkRead"         , M_TARGET_EXIST},
+               {"Menus/SummaryViewPopup/Mark/MarkAllRead"      , M_TARGET_EXIST},
+               {"Menus/SummaryViewPopup/Mark/IgnoreThread"     , M_TARGET_EXIST},
+               {"Menus/SummaryViewPopup/Mark/UnignoreThread"           , M_TARGET_EXIST},
+               {"Menus/SummaryViewPopup/Mark/WatchThread"              , M_TARGET_EXIST},
+               {"Menus/SummaryViewPopup/Mark/UnwatchThread"    , M_TARGET_EXIST},
+               {"Menus/SummaryViewPopup/Mark/Unlock"                   , M_TARGET_EXIST},
+               {"Menus/SummaryViewPopup/Mark/Lock"             , M_TARGET_EXIST},
+               {"Menus/SummaryViewPopup/Mark/MarkSpam"         , M_TARGET_EXIST|M_CAN_LEARN_SPAM},
+               {"Menus/SummaryViewPopup/Mark/MarkHam"          , M_TARGET_EXIST|M_CAN_LEARN_SPAM},
+               {"Menus/SummaryViewPopup/ColorLabel"                    , M_TARGET_EXIST},
+               {"Menus/SummaryViewPopup/Tags"                  , M_TARGET_EXIST},
 
 #ifndef GENERIC_UMPC
-               {"SummaryViewPopup/AddSenderToAB"       , M_SINGLE_TARGET_EXIST},
+               {"Menus/SummaryViewPopup/AddSenderToAB" , M_SINGLE_TARGET_EXIST},
 #endif
-               {"SummaryViewPopup/CreateFilterRule"            , M_SINGLE_TARGET_EXIST|M_UNLOCKED},
+               {"Menus/SummaryViewPopup/CreateFilterRule"              , M_SINGLE_TARGET_EXIST|M_UNLOCKED},
 #ifndef GENERIC_UMPC
-               {"SummaryViewPopup/CreateProcessingRule"        , M_SINGLE_TARGET_EXIST|M_UNLOCKED},
+               {"Menus/SummaryViewPopup/CreateProcessingRule"  , M_SINGLE_TARGET_EXIST|M_UNLOCKED},
 #endif
 
-               {"SummaryViewPopup/View"                        , M_SINGLE_TARGET_EXIST},
-               {"SummaryViewPopup/View/OpenInNewWindow"     , M_SINGLE_TARGET_EXIST},
-               {"SummaryViewPopup/View/MessageSource"          , M_SINGLE_TARGET_EXIST},
+               {"Menus/SummaryViewPopup/View"                  , M_SINGLE_TARGET_EXIST},
+               {"Menus/SummaryViewPopup/View/OpenNewWindow"     , M_SINGLE_TARGET_EXIST},
+               {"Menus/SummaryViewPopup/View/MessageSource"            , M_SINGLE_TARGET_EXIST},
 #ifndef GENERIC_UMPC
-               {"SummaryViewPopup/View/AllHeaders"             , M_SINGLE_TARGET_EXIST},
+               {"Menus/SummaryViewPopup/View/AllHeaders"               , M_SINGLE_TARGET_EXIST},
 #endif
-               {"SummaryViewPopup/SaveAs"                      , M_TARGET_EXIST},
+               {"Menus/SummaryViewPopup/SaveAs"                        , M_TARGET_EXIST},
 #ifndef GENERIC_UMPC
-               {"SummaryViewPopup/Print"                       , M_TARGET_EXIST},
+               {"Menus/SummaryViewPopup/Print"                 , M_TARGET_EXIST},
 #endif
                {NULL, 0}
        };
@@ -1843,7 +1675,7 @@ void summary_set_menu_sensitive(SummaryView *summaryview)
 
        for (i = 0; entry[i].entry != NULL; i++) {
                sensitive = ((entry[i].cond & state) == entry[i].cond);
-               cm_menu_set_sensitive(entry[i].entry, sensitive);
+               cm_menu_set_sensitive_full(summaryview->mainwin->ui_manager, entry[i].entry, sensitive);
        }
 
        summary_lock(summaryview);
@@ -1851,7 +1683,7 @@ void summary_set_menu_sensitive(SummaryView *summaryview)
        if (summaryview->messageview 
        &&  summaryview->messageview->mimeview
        &&  summaryview->messageview->mimeview->textview)
-               cm_toggle_menu_set_active("SummaryViewPopup/View/AllHeaders",
+               cm_toggle_menu_set_active_full(summaryview->mainwin->ui_manager, "Menus/SummaryViewPopup/View/AllHeaders",
                        summaryview->messageview->mimeview->textview->show_all_headers);
 #endif
        summary_unlock(summaryview);
@@ -2797,19 +2629,19 @@ static void summary_set_column_titles(SummaryView *summaryview)
                }
 
                if (type == S_COL_MIME) {
-                       label = gtk_image_new_from_pixmap(clipxpm, clipxpmmask);
+                       label = gtk_image_new_from_pixbuf(clipxpm);
                        gtk_widget_show(label);
                        gtk_cmclist_set_column_widget(clist, pos, label);
                        gtk_sctree_set_column_tooltip(GTK_SCTREE(clist), pos, _("Attachment"));
                        continue;
                } else if (type == S_COL_MARK) {
-                       label = gtk_image_new_from_pixmap(markxpm, markxpmmask);
+                       label = gtk_image_new_from_pixbuf(markxpm);
                        gtk_widget_show(label);
                        gtk_cmclist_set_column_widget(clist, pos, label);
                        gtk_sctree_set_column_tooltip(GTK_SCTREE(clist), pos, _("Mark"));
                        continue;
                } else if (type == S_COL_LOCKED) {
-                       label = gtk_image_new_from_pixmap(lockedxpm, lockedxpmmask);
+                       label = gtk_image_new_from_pixbuf(lockedxpm);
                        gtk_widget_show(label);
                        gtk_cmclist_set_column_widget(clist, pos, label);
                        gtk_sctree_set_column_tooltip(GTK_SCTREE(clist), pos, _("Locked"));
@@ -2957,9 +2789,11 @@ void summary_sort(SummaryView *summaryview,
                cmp_func = (GtkCMCListCompareFunc)summary_cmp_by_from;
                break;
        case SORT_BY_SUBJECT:
+#ifndef G_OS_WIN32
                if (summaryview->simplify_subject_preg)
                        cmp_func = (GtkCMCListCompareFunc)summary_cmp_by_simplified_subject;
                else
+#endif
                        cmp_func = (GtkCMCListCompareFunc)summary_cmp_by_subject;
                break;
        case SORT_BY_SCORE:
@@ -3057,7 +2891,7 @@ static gboolean summary_insert_gnode_func(GtkCMCTree *ctree, guint depth, GNode
        summary_set_header(summaryview, text, msginfo);
 
        gtk_sctree_set_node_info(ctree, cnode, text[col_pos[S_COL_SUBJECT]], 2,
-                               NULL, NULL, NULL, NULL, FALSE, summaryview->threaded && !summaryview->thread_collapsed);
+                               NULL, NULL, FALSE, summaryview->threaded && !summaryview->thread_collapsed);
 #define SET_TEXT(col) {                                                \
        gtk_cmctree_node_set_text(ctree, cnode, col_pos[col],   \
                                text[col_pos[col]]);            \
@@ -3156,7 +2990,7 @@ static void summary_set_ctree_from_list(SummaryView *summaryview,
 
                        node = gtk_sctree_insert_node
                                (ctree, NULL, node, text, 2,
-                                NULL, NULL, NULL, NULL,
+                                NULL, NULL,
                                 FALSE, FALSE);
                        if (vert && prefs_common.two_line_vert)
                                g_free(text[summaryview->col_pos[S_COL_SUBJECT]]);
@@ -3305,7 +3139,7 @@ static inline void summary_set_header(SummaryView *summaryview, gchar *text[],
        /* slow! */
        if (summaryview->col_state[summaryview->col_pos[S_COL_DATE]].visible || 
            (vert && prefs_common.two_line_vert)) {
-               if (msginfo->date_t) {
+               if (msginfo->date_t && msginfo->date_t > 0) {
                        procheader_date_get_localtime(date_modified,
                                                      sizeof(date_modified),
                                                      msginfo->date_t);
@@ -3358,17 +3192,29 @@ static inline void summary_set_header(SummaryView *summaryview, gchar *text[],
        if (!should_swap) {
                text[col_pos[S_COL_FROM]] = from_text;
        } else {
+               if (prefs_common.use_addr_book) {
+                       gchar *tmp = summary_complete_address(to_text);
+                       if (tmp) {
+                               strncpy2(buf, tmp, sizeof(buf));
+                               g_free(tmp);
+                               to_text = buf;
+                       } else {
+                               to_text = to_text ? to_text : _("(No From)");
+                       }
+               }
                snprintf(tmp2, BUFFSIZE-1, "--> %s", to_text);
                tmp2[BUFFSIZE-1]='\0';
                text[col_pos[S_COL_FROM]] = tmp2;
        }
        
+#ifndef G_OS_WIN32
        if (summaryview->simplify_subject_preg != NULL)
                text[col_pos[S_COL_SUBJECT]] = msginfo->subject ? 
                        string_remove_match(tmp3, BUFFSIZE, msginfo->subject, 
                                        summaryview->simplify_subject_preg) : 
                        _("(No Subject)");
        else 
+#endif
                text[col_pos[S_COL_SUBJECT]] = msginfo->subject ? msginfo->subject :
                        _("(No Subject)");
        if (vert && prefs_common.two_line_vert) {
@@ -3589,8 +3435,13 @@ static void summary_display_msg_full(SummaryView *summaryview,
                        MarkAsReadData *data = g_new0(MarkAsReadData, 1);
                        data->summaryview = summaryview;
                        data->msginfo = msginfo;
+#if GLIB_CHECK_VERSION(2,14,0)
+                       g_timeout_add_seconds(prefs_common.mark_as_read_delay,
+                               msginfo_mark_as_read_timeout, data);
+#else
                        g_timeout_add(prefs_common.mark_as_read_delay * 1000,
                                msginfo_mark_as_read_timeout, data);
+#endif
                } else if (new_window || !prefs_common.mark_as_read_on_new_window) {
                        msginfo_mark_as_read(summaryview, msginfo, row);
                }
@@ -3792,26 +3643,26 @@ static void summary_set_row_marks(SummaryView *summaryview, GtkCMCTreeNode *row)
 
        /* set new/unread column */
        if (MSG_IS_IGNORE_THREAD(flags)) {
-               gtk_cmctree_node_set_pixmap(ctree, row, col_pos[S_COL_STATUS],
-                                         ignorethreadxpm, ignorethreadxpmmask);
+               gtk_cmctree_node_set_pixbuf(ctree, row, col_pos[S_COL_STATUS],
+                                         ignorethreadxpm);
        } else if (MSG_IS_WATCH_THREAD(flags)) {
-               gtk_cmctree_node_set_pixmap(ctree, row, col_pos[S_COL_STATUS],
-                                         watchthreadxpm, watchthreadxpmmask);
+               gtk_cmctree_node_set_pixbuf(ctree, row, col_pos[S_COL_STATUS],
+                                         watchthreadxpm);
        } else if (MSG_IS_SPAM(flags)) {
-               gtk_cmctree_node_set_pixmap(ctree, row, col_pos[S_COL_STATUS],
-                                         spamxpm, spamxpmmask);
+               gtk_cmctree_node_set_pixbuf(ctree, row, col_pos[S_COL_STATUS],
+                                         spamxpm);
        } else if (MSG_IS_NEW(flags)) {
-               gtk_cmctree_node_set_pixmap(ctree, row, col_pos[S_COL_STATUS],
-                                         newxpm, newxpmmask);
+               gtk_cmctree_node_set_pixbuf(ctree, row, col_pos[S_COL_STATUS],
+                                         newxpm);
        } else if (MSG_IS_UNREAD(flags)) {
-               gtk_cmctree_node_set_pixmap(ctree, row, col_pos[S_COL_STATUS],
-                                         unreadxpm, unreadxpmmask);
+               gtk_cmctree_node_set_pixbuf(ctree, row, col_pos[S_COL_STATUS],
+                                         unreadxpm);
        } else if (MSG_IS_REPLIED(flags)) {
-               gtk_cmctree_node_set_pixmap(ctree, row, col_pos[S_COL_STATUS],
-                                         repliedxpm, repliedxpmmask);
+               gtk_cmctree_node_set_pixbuf(ctree, row, col_pos[S_COL_STATUS],
+                                         repliedxpm);
        } else if (MSG_IS_FORWARDED(flags)) {
-               gtk_cmctree_node_set_pixmap(ctree, row, col_pos[S_COL_STATUS],
-                                         forwardedxpm, forwardedxpmmask);
+               gtk_cmctree_node_set_pixbuf(ctree, row, col_pos[S_COL_STATUS],
+                                         forwardedxpm);
        } else {
                gtk_cmctree_node_set_text(ctree, row, col_pos[S_COL_STATUS],
                                        "");
@@ -3826,8 +3677,8 @@ static void summary_set_row_marks(SummaryView *summaryview, GtkCMCTreeNode *row)
 
        /* set mark column */
        if (MSG_IS_DELETED(flags)) {
-               gtk_cmctree_node_set_pixmap(ctree, row, col_pos[S_COL_MARK],
-                                         deletedxpm, deletedxpmmask);
+               gtk_cmctree_node_set_pixbuf(ctree, row, col_pos[S_COL_MARK],
+                                         deletedxpm);
                if (style)
                        style = bold_deleted_style;
                else {
@@ -3836,11 +3687,11 @@ static void summary_set_row_marks(SummaryView *summaryview, GtkCMCTreeNode *row)
                        gtk_cmctree_node_set_foreground
                                (ctree, row, &summaryview->color_dim);
        } else if (MSG_IS_MARKED(flags)) {
-               gtk_cmctree_node_set_pixmap(ctree, row, col_pos[S_COL_MARK],
-                                         markxpm, markxpmmask);
+               gtk_cmctree_node_set_pixbuf(ctree, row, col_pos[S_COL_MARK],
+                                         markxpm);
        } else if (MSG_IS_MOVE(flags)) {
-               gtk_cmctree_node_set_pixmap(ctree, row, col_pos[S_COL_MARK],
-                                         movedxpm, movedxpmmask);
+               gtk_cmctree_node_set_pixbuf(ctree, row, col_pos[S_COL_MARK],
+                                         movedxpm);
                if (style)
                        style = bold_marked_style;
                else {
@@ -3849,8 +3700,8 @@ static void summary_set_row_marks(SummaryView *summaryview, GtkCMCTreeNode *row)
                        gtk_cmctree_node_set_foreground
                                (ctree, row, &summaryview->color_marked);
        } else if (MSG_IS_COPY(flags)) {
-               gtk_cmctree_node_set_pixmap(ctree, row, col_pos[S_COL_MARK],
-                                         copiedxpm, copiedxpmmask);
+               gtk_cmctree_node_set_pixbuf(ctree, row, col_pos[S_COL_MARK],
+                                         copiedxpm);
                if (style)
                        style = bold_marked_style;
                else {
@@ -3863,33 +3714,33 @@ static void summary_set_row_marks(SummaryView *summaryview, GtkCMCTreeNode *row)
        }
 
        if (MSG_IS_LOCKED(flags)) {
-               gtk_cmctree_node_set_pixmap(ctree, row, col_pos[S_COL_LOCKED],
-                                         lockedxpm, lockedxpmmask);
+               gtk_cmctree_node_set_pixbuf(ctree, row, col_pos[S_COL_LOCKED],
+                                         lockedxpm);
        }
        else {
                gtk_cmctree_node_set_text(ctree, row, col_pos[S_COL_LOCKED], "");
        }
 
        if (MSG_IS_WITH_ATTACHMENT(flags) && MSG_IS_SIGNED(flags)) {
-               gtk_cmctree_node_set_pixmap(ctree, row, col_pos[S_COL_MIME],
-                                         clipgpgsignedxpm, clipgpgsignedxpmmask);
+               gtk_cmctree_node_set_pixbuf(ctree, row, col_pos[S_COL_MIME],
+                                         clipgpgsignedxpm);
        } else if (MSG_IS_SIGNED(flags)) {
                if (MSG_IS_ENCRYPTED(flags)) {
-                       gtk_cmctree_node_set_pixmap(ctree, row, col_pos[S_COL_MIME],
-                                         keysignxpm, keysignxpmmask);
+                       gtk_cmctree_node_set_pixbuf(ctree, row, col_pos[S_COL_MIME],
+                                         keysignxpm);
                } else {
-                       gtk_cmctree_node_set_pixmap(ctree, row, col_pos[S_COL_MIME],
-                                                 gpgsignedxpm, gpgsignedxpmmask);
+                       gtk_cmctree_node_set_pixbuf(ctree, row, col_pos[S_COL_MIME],
+                                                 gpgsignedxpm);
                }
        } else if (MSG_IS_WITH_ATTACHMENT(flags) && MSG_IS_ENCRYPTED(flags)) {
-               gtk_cmctree_node_set_pixmap(ctree, row, col_pos[S_COL_MIME],
-                                         clipkeyxpm, clipkeyxpmmask);
+               gtk_cmctree_node_set_pixbuf(ctree, row, col_pos[S_COL_MIME],
+                                         clipkeyxpm);
        } else if (MSG_IS_ENCRYPTED(flags)) {
-               gtk_cmctree_node_set_pixmap(ctree, row, col_pos[S_COL_MIME],
-                                         keyxpm, keyxpmmask);
+               gtk_cmctree_node_set_pixbuf(ctree, row, col_pos[S_COL_MIME],
+                                         keyxpm);
        } else if (MSG_IS_WITH_ATTACHMENT(flags)) {
-               gtk_cmctree_node_set_pixmap(ctree, row, col_pos[S_COL_MIME],
-                                         clipxpm, clipxpmmask);
+               gtk_cmctree_node_set_pixbuf(ctree, row, col_pos[S_COL_MIME],
+                                         clipxpm);
        } else {
                gtk_cmctree_node_set_text(ctree, row, col_pos[S_COL_MIME], "");
        }
@@ -4814,13 +4665,13 @@ void summary_print(SummaryView *summaryview)
        if (clist->selection == NULL) return;
 #if !defined(USE_GNOMEPRINT) && !GTK_CHECK_VERSION(2,10,0)
        cmdline = input_dialog(_("Print"),
-                              _("Enter the print command line:\n"
+                              _("Enter the print command-line:\n"
                                 "('%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;
@@ -5275,10 +5126,12 @@ void summary_expand_threads(SummaryView *summaryview)
 {
        GtkCMCTree *ctree = GTK_CMCTREE(summaryview->ctree);
        GtkCMCTreeNode *node = GTK_CMCTREE_NODE(GTK_CMCLIST(ctree)->row_list);
+       GtkCMCTreeNode *focus_node = GTK_CMCTREE_NODE (g_list_nth (GTK_CMCLIST(ctree)->row_list, GTK_CMCLIST(ctree)->focus_row));
 
        g_signal_handlers_block_by_func(G_OBJECT(ctree),
                                       G_CALLBACK(summary_tree_expanded), summaryview);
        summary_freeze(summaryview);
+       GTK_SCTREE(ctree)->sorting = TRUE;
 
        while (node) {
                if (GTK_CMCTREE_ROW(node)->children) {
@@ -5288,7 +5141,12 @@ void summary_expand_threads(SummaryView *summaryview)
                node = GTK_CMCTREE_NODE_NEXT(node);
        }
 
+       GTK_SCTREE(ctree)->sorting = FALSE;
+       if (focus_node) {
+               GTK_CMCLIST(ctree)->focus_row = g_list_position (GTK_CMCLIST(ctree)->row_list,(GList *)focus_node);
+       }
        summary_thaw(summaryview);
+
        g_signal_handlers_unblock_by_func(G_OBJECT(ctree),
                                         G_CALLBACK(summary_tree_expanded), summaryview);
 
@@ -5300,16 +5158,30 @@ void summary_expand_threads(SummaryView *summaryview)
 void summary_collapse_threads(SummaryView *summaryview)
 {
        GtkCMCTree *ctree = GTK_CMCTREE(summaryview->ctree);
-       GtkCMCTreeNode *node = GTK_CMCTREE_NODE(GTK_CMCLIST(ctree)->row_list);
+       GtkCMCTreeNode *node = NULL;
+       GtkCMCTreeNode *focus_node = GTK_CMCTREE_NODE (g_list_nth (GTK_CMCLIST(ctree)->row_list, GTK_CMCLIST(ctree)->focus_row));
 
        summary_freeze(summaryview);
+       GTK_SCTREE(ctree)->sorting = TRUE;
 
+       node = focus_node;
+       while (node && GTK_CMCTREE_ROW(node)->parent) {
+               focus_node = node = GTK_CMCTREE_ROW(node)->parent;
+       }
+       gtk_sctree_select(GTK_SCTREE(ctree), focus_node);
+       node = GTK_CMCTREE_NODE(GTK_CMCLIST(ctree)->row_list);
        while (node) {
                if (GTK_CMCTREE_ROW(node)->children)
                        gtk_cmctree_collapse(ctree, node);
                node = GTK_CMCTREE_ROW(node)->sibling;
        }
 
+       GTK_SCTREE(ctree)->sorting = FALSE;
+       if (focus_node) {
+               GTK_CMCLIST(ctree)->focus_row = g_list_position (GTK_CMCLIST(ctree)->row_list,(GList *)focus_node);
+       }
+       GTK_SCTREE(ctree)->anchor_row =
+                       gtk_cmctree_node_nth(ctree, GTK_CMCLIST(ctree)->focus_row);
        summary_thaw(summaryview);
        
        summaryview->thread_collapsed = TRUE;
@@ -5743,7 +5615,7 @@ static void summary_colorlabel_menu_create(SummaryView *summaryview, gboolean re
        gint i;
        gchar *accel_path = NULL;
 
-       label_menuitem = gtk_ui_manager_get_widget(gtkut_ui_manager(), "/Menus/SummaryViewPopup/ColorLabel");
+       label_menuitem = gtk_ui_manager_get_widget(summaryview->mainwin->ui_manager, "/Menus/SummaryViewPopup/ColorLabel");
        g_signal_connect(G_OBJECT(label_menuitem), "activate",
                         G_CALLBACK(summary_colorlabel_menu_item_activate_item_cb),
                           summaryview);
@@ -5787,11 +5659,13 @@ static void summary_colorlabel_menu_create(SummaryView *summaryview, gboolean re
                g_object_set_data(G_OBJECT(item), "summaryview",
                                  summaryview);
                gtk_widget_show(item);
-               accel_path = g_strdup_printf("<ClawsColorLabels>/%d", i);
+               accel_path = g_strdup_printf("<ClawsColorLabels>/%d", i+1);
                gtk_menu_item_set_accel_path(GTK_MENU_ITEM(item), accel_path);
                if (i < 9)
                        gtk_accel_map_add_entry(accel_path, GDK_1+i, GDK_CONTROL_MASK);
                g_free(accel_path);
+               g_signal_connect (gtk_ui_manager_get_accel_group(mainwindow_get_mainwindow()->ui_manager), 
+                       "accel-changed", G_CALLBACK (mainwin_accel_changed_cb), item);
        }
 
        gtk_widget_show(menu);
@@ -5892,11 +5766,13 @@ static void summary_tags_menu_item_activate_item_cb(GtkMenuItem *menu_item,
 
 void summaryview_destroy(SummaryView *summaryview)
 {
+#ifndef G_OS_WIN32
        if(summaryview->simplify_subject_preg) {
                regfree(summaryview->simplify_subject_preg);
                g_free(summaryview->simplify_subject_preg);
                summaryview->simplify_subject_preg = NULL;
        }
+#endif
 }
 static void summary_tags_menu_item_apply_tags_activate_cb(GtkWidget *widget,
                                                     gpointer data)
@@ -5942,7 +5818,7 @@ static void summary_tags_menu_create(SummaryView *summaryview, gboolean refresh)
        gchar *accel_path = NULL;
 
        cur = orig = g_slist_sort(cur, summary_tag_cmp_list);
-       label_menuitem = gtk_ui_manager_get_widget(gtkut_ui_manager(), "/Menus/SummaryViewPopup/Tags");
+       label_menuitem = gtk_ui_manager_get_widget(summaryview->mainwin->ui_manager, "/Menus/SummaryViewPopup/Tags");
        g_signal_connect(G_OBJECT(label_menuitem), "activate",
                         G_CALLBACK(summary_tags_menu_item_activate_item_cb),
                           summaryview);
@@ -5952,7 +5828,7 @@ static void summary_tags_menu_create(SummaryView *summaryview, gboolean refresh)
        menu = gtk_menu_new();
 
        gtk_menu_set_accel_group (GTK_MENU (menu), 
-               gtk_ui_manager_get_accel_group(gtkut_ui_manager()));
+               gtk_ui_manager_get_accel_group(summaryview->mainwin->ui_manager));
 
        /* create tags menu items */
        for (; cur; cur = cur->next) {
@@ -6115,7 +5991,7 @@ static gboolean tooltip_cb (GtkWidget  *widget,
                        break;
                case GTK_CMCELL_PIXTEXT:
                        if (gtk_cmctree_node_get_pixtext(ctree, node, column, &text, 
-                               NULL, NULL, NULL) != TRUE)
+                               NULL, NULL) != TRUE)
                                return FALSE;
                        break;
                default: 
@@ -6412,7 +6288,9 @@ static gboolean summary_button_pressed(GtkWidget *ctree, GdkEventButton *event,
        if (event->button == 3) {
                summaryview->display_msg = messageview_is_visible(summaryview->messageview);
                /* right clicked */
-               cm_menu_set_sensitive("SummaryViewPopup/Trash", !folder_has_parent_of_type(summaryview->folder_item, F_TRASH));
+               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) {
@@ -6810,50 +6688,6 @@ GSList *summary_get_selection(SummaryView *summaryview)
        return g_slist_reverse(msginfo_list);
 }
 
-static void summary_reply_cb(SummaryView *summaryview, guint action,
-                            GtkWidget *widget)
-{
-       MessageView *msgview = (MessageView*)summaryview->messageview;
-       GSList *msginfo_list;
-
-       g_return_if_fail(msgview != NULL);
-
-       msginfo_list = summary_get_selection(summaryview);
-       g_return_if_fail(msginfo_list != NULL);
-       compose_reply_from_messageview(msgview, msginfo_list, action);
-       g_slist_free(msginfo_list);
-}
-#ifndef GENERIC_UMPC
-static void summary_show_all_header_cb(SummaryView *summaryview,
-                                      guint action, GtkWidget *widget)
-{
-       GtkWidget *menuitem = gtk_ui_manager_get_widget(gtkut_ui_manager(), "/Menus/SummaryViewPopup/View/AllHeaders");
-       if (!menuitem)
-               return;
-       summaryview->messageview->all_headers =
-                       GTK_CHECK_MENU_ITEM(menuitem)->active;
-       summary_display_msg_selected(summaryview,
-                                    GTK_CHECK_MENU_ITEM(menuitem)->active);
-}
-
-static void summary_add_address_cb(SummaryView *summaryview,
-                                  guint action, GtkWidget *widget)
-{
-       summary_add_address(summaryview);
-}
-#endif
-static void summary_create_filter_cb(SummaryView *summaryview,
-                                    guint action, GtkWidget *widget)
-{
-       summary_filter_open(summaryview, (PrefsFilterType)action, 0);
-}
-#ifndef GENERIC_UMPC
-static void summary_create_processing_cb(SummaryView *summaryview,
-                                        guint action, GtkWidget *widget)
-{
-       summary_filter_open(summaryview, (PrefsFilterType)action, 1);
-}
-#endif
 static void summary_sort_by_column_click(SummaryView *summaryview,
                                         FolderSortKey sort_key)
 {
@@ -7557,24 +7391,24 @@ void summary_reflect_prefs_pixmap_theme(SummaryView *summaryview)
        GtkWidget *ctree = summaryview->ctree;
        GtkWidget *pixmap; 
 
-       stock_pixmap_gdk(ctree, STOCK_PIXMAP_MARK, &markxpm, &markxpmmask);
-       stock_pixmap_gdk(ctree, STOCK_PIXMAP_DELETED, &deletedxpm, &deletedxpmmask);
-       stock_pixmap_gdk(ctree, STOCK_PIXMAP_NEW, &newxpm, &newxpmmask);
-       stock_pixmap_gdk(ctree, STOCK_PIXMAP_UNREAD, &unreadxpm, &unreadxpmmask);
-       stock_pixmap_gdk(ctree, STOCK_PIXMAP_REPLIED, &repliedxpm, &repliedxpmmask);
-       stock_pixmap_gdk(ctree, STOCK_PIXMAP_FORWARDED, &forwardedxpm, &forwardedxpmmask);
-       stock_pixmap_gdk(ctree, STOCK_PIXMAP_CLIP, &clipxpm, &clipxpmmask);
-       stock_pixmap_gdk(ctree, STOCK_PIXMAP_LOCKED, &lockedxpm, &lockedxpmmask);
-       stock_pixmap_gdk(ctree, STOCK_PIXMAP_IGNORETHREAD, &ignorethreadxpm, &ignorethreadxpmmask);
-       stock_pixmap_gdk(ctree, STOCK_PIXMAP_WATCHTHREAD, &watchthreadxpm, &watchthreadxpmmask);
-       stock_pixmap_gdk(ctree, STOCK_PIXMAP_CLIP_KEY, &clipkeyxpm, &clipkeyxpmmask);
-       stock_pixmap_gdk(ctree, STOCK_PIXMAP_KEY, &keyxpm, &keyxpmmask);
-       stock_pixmap_gdk(ctree, STOCK_PIXMAP_KEY_SIGN, &keysignxpm, &keysignxpmmask);
-       stock_pixmap_gdk(ctree, STOCK_PIXMAP_GPG_SIGNED, &gpgsignedxpm, &gpgsignedxpmmask);
-       stock_pixmap_gdk(ctree, STOCK_PIXMAP_CLIP_GPG_SIGNED, &clipgpgsignedxpm, &clipgpgsignedxpmmask);
-       stock_pixmap_gdk(ctree, STOCK_PIXMAP_SPAM, &spamxpm, &spamxpmmask);
-       stock_pixmap_gdk(ctree, STOCK_PIXMAP_MOVED, &movedxpm, &movedxpmmask);
-       stock_pixmap_gdk(ctree, STOCK_PIXMAP_COPIED, &copiedxpm, &copiedxpmmask);
+       stock_pixbuf_gdk(ctree, STOCK_PIXMAP_MARK, &markxpm);
+       stock_pixbuf_gdk(ctree, STOCK_PIXMAP_DELETED, &deletedxpm);
+       stock_pixbuf_gdk(ctree, STOCK_PIXMAP_NEW, &newxpm);
+       stock_pixbuf_gdk(ctree, STOCK_PIXMAP_UNREAD, &unreadxpm);
+       stock_pixbuf_gdk(ctree, STOCK_PIXMAP_REPLIED, &repliedxpm);
+       stock_pixbuf_gdk(ctree, STOCK_PIXMAP_FORWARDED, &forwardedxpm);
+       stock_pixbuf_gdk(ctree, STOCK_PIXMAP_CLIP, &clipxpm);
+       stock_pixbuf_gdk(ctree, STOCK_PIXMAP_LOCKED, &lockedxpm);
+       stock_pixbuf_gdk(ctree, STOCK_PIXMAP_IGNORETHREAD, &ignorethreadxpm);
+       stock_pixbuf_gdk(ctree, STOCK_PIXMAP_WATCHTHREAD, &watchthreadxpm);
+       stock_pixbuf_gdk(ctree, STOCK_PIXMAP_CLIP_KEY, &clipkeyxpm);
+       stock_pixbuf_gdk(ctree, STOCK_PIXMAP_KEY, &keyxpm);
+       stock_pixbuf_gdk(ctree, STOCK_PIXMAP_KEY_SIGN, &keysignxpm);
+       stock_pixbuf_gdk(ctree, STOCK_PIXMAP_GPG_SIGNED, &gpgsignedxpm);
+       stock_pixbuf_gdk(ctree, STOCK_PIXMAP_CLIP_GPG_SIGNED, &clipgpgsignedxpm);
+       stock_pixbuf_gdk(ctree, STOCK_PIXMAP_SPAM, &spamxpm);
+       stock_pixbuf_gdk(ctree, STOCK_PIXMAP_MOVED, &movedxpm);
+       stock_pixbuf_gdk(ctree, STOCK_PIXMAP_COPIED, &copiedxpm);
 
        summary_set_folder_pixmap(summaryview, STOCK_PIXMAP_DIR_OPEN);
 
@@ -7610,6 +7444,10 @@ void summary_reflect_prefs_custom_colors(SummaryView *summaryview)
 
        /* clear items. get item pointers. */
        for (cur = menu->children; cur != NULL && cur->data != NULL; cur = cur->next) {
+               g_signal_handlers_disconnect_matched
+                        (gtk_ui_manager_get_accel_group(summaryview->mainwin->ui_manager), 
+                        G_SIGNAL_MATCH_DATA|G_SIGNAL_MATCH_FUNC,
+                        0, 0, NULL, mainwin_accel_changed_cb, cur->data);
                gtk_menu_item_set_submenu(GTK_MENU_ITEM(cur->data), NULL);
        }
        summary_colorlabel_menu_create(summaryview, TRUE);
@@ -7636,6 +7474,7 @@ void summary_harvest_address(SummaryView *summaryview)
        g_list_free( msgList );
 }
 
+#ifndef G_OS_WIN32
 static regex_t *summary_compile_simplify_regexp(gchar *simplify_subject_regexp)
 {
        int err;
@@ -7655,7 +7494,7 @@ static regex_t *summary_compile_simplify_regexp(gchar *simplify_subject_regexp)
        
        return preg;
 }
-
+#endif
 void summary_set_prefs_from_folderitem(SummaryView *summaryview, FolderItem *item)
 {
        FolderSortKey sort_key;
@@ -7664,6 +7503,7 @@ void summary_set_prefs_from_folderitem(SummaryView *summaryview, FolderItem *ite
        g_return_if_fail(item != NULL);
 
        /* Subject simplification */
+#ifndef G_OS_WIN32
        if(summaryview->simplify_subject_preg) {
                regfree(summaryview->simplify_subject_preg);
                g_free(summaryview->simplify_subject_preg);
@@ -7672,7 +7512,7 @@ void summary_set_prefs_from_folderitem(SummaryView *summaryview, FolderItem *ite
        if(item->prefs && item->prefs->simplify_subject_regexp && 
           item->prefs->simplify_subject_regexp[0] && item->prefs->enable_simplify_subject)
                summaryview->simplify_subject_preg = summary_compile_simplify_regexp(item->prefs->simplify_subject_regexp);
-
+#endif
        /* Sorting */
        sort_key = item->sort_key;
        sort_type = item->sort_type;