2009-01-30 [paul] 3.7.0cvs46
[claws.git] / src / summaryview.c
index 7af42011f238634bb724cb4206d664b9757c8c0a..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
@@ -71,6 +71,7 @@
 #include "partial_download.h"
 #include "tags.h"
 #include "timing.h"
+#include "gedit-print.h"
 #include "log.h"
 #include "edittags.h"
 #include "manual.h"
@@ -88,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,
@@ -294,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,
@@ -445,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 */
-#ifndef GENERIC_UMPC
-       {"SummaryViewPopup/AddSenderToAB",                      NULL, N_("Add sender to address boo_k"), NULL, NULL, G_CALLBACK(summary_menu_cb) }, 
-#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) }, 
-
+       {"SummaryViewPopup/CreateFilterRule",           NULL, "Create _filter rule" },
 #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) }, 
-
+       {"SummaryViewPopup/CreateProcessingRule",       NULL, "Create processing rule" },
 #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    */
@@ -654,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;
@@ -801,99 +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);
-#ifndef GENERIC_UMPC
-       gtk_action_group_add_toggle_actions(summaryview->action_group, summary_popup_toggleentries,
-                       G_N_ELEMENTS(summary_popup_toggleentries), (gpointer)summaryview);
-#endif
 
-       MENUITEM_ADDUI("/Menus", "SummaryViewPopup", "SummaryViewPopup", GTK_UI_MANAGER_MENU)
-       MENUITEM_ADDUI("/Menus/SummaryViewPopup", "Reply", "SummaryViewPopup/Reply", GTK_UI_MANAGER_MENUITEM)
+       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
-       MENUITEM_ADDUI("/Menus/SummaryViewPopup", "ReplyTo", "SummaryViewPopup/ReplyTo", GTK_UI_MANAGER_MENU)
-       MENUITEM_ADDUI("/Menus/SummaryViewPopup", "Separator1", "SummaryViewPopup/---", GTK_UI_MANAGER_SEPARATOR)
+       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", "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);
 
@@ -1779,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}
        };
@@ -1844,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);
@@ -1852,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);
@@ -2798,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"));
@@ -3060,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]]);            \
@@ -3159,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]]);
@@ -3361,6 +3192,16 @@ 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;
@@ -3802,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],
                                        "");
@@ -3836,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 {
@@ -3846,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 {
@@ -3859,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 {
@@ -3873,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], "");
        }
@@ -4802,7 +4643,7 @@ void summary_save_as(SummaryView *summaryview)
 void summary_print(SummaryView *summaryview)
 {
        GtkCMCList *clist = GTK_CMCLIST(summaryview->ctree);
-#if !GTK_CHECK_VERSION(2,10,0)
+#if !defined(USE_GNOMEPRINT) && !GTK_CHECK_VERSION(2,10,0)
        GtkCMCTree *ctree = GTK_CMCTREE(summaryview->ctree);
        MsgInfo *msginfo;
        gchar *cmdline = NULL;
@@ -4822,15 +4663,15 @@ void summary_print(SummaryView *summaryview)
        g_free(msg);
 
        if (clist->selection == NULL) return;
-#if !GTK_CHECK_VERSION(2,10,0)
+#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;
@@ -5285,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) {
@@ -5298,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);
 
@@ -5310,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;
@@ -5753,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);
@@ -5956,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);
@@ -5966,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) {
@@ -6129,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: 
@@ -6426,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) {
@@ -6824,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)
 {
@@ -7571,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);
 
@@ -7624,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);