plug mem leaks in stock pixmap code, and refactor code a tiny little bit
[claws.git] / src / prefs_common.c
index 268723082895aa93553897ddb5333231c59f193f..1f41d898219be746f63222b5ccc3cc2d41080d67 100644 (file)
@@ -53,6 +53,7 @@
 #include "folder.h"
 #include "filesel.h"
 #include "folderview.h"
+#include "stock_pixmap.h"
 
 #if USE_PSPELL
 #include "gtkspell.h"
@@ -132,6 +133,7 @@ static struct Spelling {
        GtkWidget *optmenu_dictionary;
        GtkWidget *optmenu_sugmode;
        GtkWidget *misspelled_btn;
+       GtkWidget *checkbtn_use_alternate;
        GtkWidget *checkbtn_check_while_typing;
 } spelling;
 #endif
@@ -199,7 +201,8 @@ static struct Interface {
        GtkWidget *checkbtn_addaddrbyclick;
        GtkWidget *optmenu_recvdialog;
        GtkWidget *optmenu_nextunreadmsgdialog;
-       GtkWidget *keybind_combo;
+       GtkWidget *entry_pixmap_theme;
+       GtkWidget *combo_pixmap_theme;
 } interface;
 
 static struct Other {
@@ -222,6 +225,11 @@ static struct MessageColorButtons {
        GtkWidget *tgt_folder_btn;
 } color_buttons;
 
+static struct KeybindDialog {
+       GtkWidget *window;
+       GtkWidget *combo;
+} keybind;
+
 static GtkWidget *quote_desc_win;
 static GtkWidget *font_sel_win;
 static guint font_sel_conn_id; 
@@ -359,6 +367,9 @@ static PrefParam param[] = {
        {"pspell_sugmode",  "1", &prefs_common.pspell_sugmode,
         P_INT, &spelling.optmenu_sugmode, 
         prefs_speller_sugmode_set_data_from_optmenu, prefs_speller_sugmode_set_optmenu },
+       {"use_alternate_dict", "FALSE", &prefs_common.use_alternate,
+        P_BOOL, &spelling.checkbtn_use_alternate,
+        prefs_set_data_from_toggle, prefs_set_toggle},
        {"check_while_typing", "TRUE", &prefs_common.check_while_typing,
         P_BOOL, &spelling.checkbtn_check_while_typing,
         prefs_set_data_from_toggle, prefs_set_toggle},
@@ -679,7 +690,10 @@ static PrefParam param[] = {
        {"add_address_by_click", "FALSE", &prefs_common.add_address_by_click,
         P_BOOL, &interface.checkbtn_addaddrbyclick,
         prefs_set_data_from_toggle, prefs_set_toggle},
-
+       {"pixmap_theme_path", DEFAULT_PIXMAP_THEME, 
+        &prefs_common.pixmap_theme_path, P_STRING,
+        &interface.entry_pixmap_theme, prefs_set_data_from_entry, prefs_set_entry},
+       
        /* Other */
        {"uri_open_command", "netscape -remote 'openURL(%s,raise)'",
         &prefs_common.uri_cmd, P_STRING,
@@ -779,6 +793,15 @@ static void prefs_font_selection_key_pressed       (GtkWidget      *widget,
                                                 GdkEventKey    *event,
                                                 gpointer        data);
 static void prefs_font_selection_ok            (GtkButton      *button, GtkEntry *entry);
+
+static void prefs_keybind_select               (void);
+static gint prefs_keybind_deleted              (GtkWidget      *widget,
+                                                GdkEventAny    *event,
+                                                gpointer        data);
+static void prefs_keybind_key_pressed          (GtkWidget      *widget,
+                                                GdkEventKey    *event,
+                                                gpointer        data);
+static void prefs_keybind_cancel               (void);
 static void prefs_keybind_apply_clicked                (GtkWidget      *widget);
 
 static gint prefs_common_deleted       (GtkWidget      *widget,
@@ -1286,7 +1309,8 @@ static void prefs_dictionary_set_optmenu(PrefParam *pparam)
                for (cur = GTK_MENU_SHELL(menu)->children;
                     cur != NULL; cur = cur->next) {
                        menuitem = GTK_WIDGET(cur->data);
-                       dict_name = gtk_object_get_data(GTK_OBJECT(menuitem), "dict_name");
+                       dict_name = gtk_object_get_data(GTK_OBJECT(menuitem), 
+                                                       "dict_name");
                        if (!strcmp2(dict_name, *((gchar **)pparam->data))) {
                                gtk_option_menu_set_history(optmenu, n);
                                return;
@@ -1339,8 +1363,9 @@ static void prefs_spelling_checkbtn_enable_pspell_toggle_cb
        gtk_widget_set_sensitive(spelling.optmenu_dictionary,  toggled);
        gtk_widget_set_sensitive(spelling.optmenu_sugmode,     toggled);
        gtk_widget_set_sensitive(spelling.btn_pspell_path,     toggled);
-       gtk_widget_set_sensitive(spelling.misspelled_btn, toggled);
-       gtk_widget_set_sensitive(spelling.checkbtn_check_while_typing,  toggled);
+       gtk_widget_set_sensitive(spelling.misspelled_btn,      toggled);
+       gtk_widget_set_sensitive(spelling.checkbtn_use_alternate,      toggled);
+       gtk_widget_set_sensitive(spelling.checkbtn_check_while_typing, toggled);
 }
 
 static void prefs_spelling_btn_pspell_path_clicked_cb(GtkWidget *widget,
@@ -1359,23 +1384,28 @@ static void prefs_spelling_btn_pspell_path_clicked_cb(GtkWidget *widget,
          
                if (prefs_common.pspell_path)
                        g_free(prefs_common.pspell_path);
-               prefs_common.pspell_path = g_strdup_printf("%s%s",tmp,G_DIR_SEPARATOR_S);
+               prefs_common.pspell_path = g_strdup_printf("%s%s",tmp,
+                                                          G_DIR_SEPARATOR_S);
 
                new_menu = gtkpspell_dictionary_option_menu_new(prefs_common.pspell_path);
                gtk_option_menu_set_menu(GTK_OPTION_MENU(spelling.optmenu_dictionary),
                                         new_menu);
 
-               gtk_entry_set_text(GTK_ENTRY(spelling.entry_pspell_path), prefs_common.pspell_path);                                     
+               gtk_entry_set_text(GTK_ENTRY(spelling.entry_pspell_path), 
+                                  prefs_common.pspell_path);                                    
                /* select first one */
-               gtk_option_menu_set_history(GTK_OPTION_MENU(spelling.optmenu_dictionary), 0);
+               gtk_option_menu_set_history(GTK_OPTION_MENU(
+                                       spelling.optmenu_dictionary), 0);
        
                if (prefs_common.dictionary)
                        g_free(prefs_common.dictionary);
 
-               prefs_common.dictionary = gtkpspell_get_dictionary_menu_active_item(
-                               gtk_option_menu_get_menu(GTK_OPTION_MENU(spelling.optmenu_dictionary)));
+               prefs_common.dictionary = 
+                       gtkpspell_get_dictionary_menu_active_item(
+                               gtk_option_menu_get_menu(
+                                       GTK_OPTION_MENU(
+                                               spelling.optmenu_dictionary)));
                g_free(tmp);
-       
 
        }
 }
@@ -1396,10 +1426,13 @@ static void prefs_spelling_create()
        GtkWidget *optmenu_dictionary;
        GtkWidget *sugmode_label;
        GtkWidget *sugmode_optmenu;
+       GtkWidget *checkbtn_use_alternate;
+       GtkWidget *help_label;
        GtkWidget *checkbtn_check_while_typing;
        GtkWidget *color_label;
        GtkWidget *hbox_col;
        GtkWidget *col_align;
+       GtkWidget *hline;
 
 
        vbox1 = gtk_vbox_new (FALSE, VSPACING);
@@ -1425,32 +1458,35 @@ static void prefs_spelling_create()
        PACK_CHECK_BUTTON(vbox_spell, checkbtn_check_while_typing, 
                          _("Check while typing"));
 
-       gtk_signal_connect(GTK_OBJECT(checkbtn_enable_pspell), "toggled",
-                          GTK_SIGNAL_FUNC(prefs_spelling_checkbtn_enable_pspell_toggle_cb),
-                          NULL);
+       PACK_CHECK_BUTTON(vbox_spell, checkbtn_use_alternate, 
+                         _("Enable alternate dictionary"));
 
+       help_label = gtk_label_new(_("Enabling alternate dictionary makes switching\nwith the last used dictionary faster."));
+       gtk_widget_show(help_label);
+       gtk_box_pack_start(GTK_BOX(vbox_spell), help_label, FALSE, TRUE, 0);
+       
        spell_table = gtk_table_new(4, 3, FALSE);
-       gtk_container_set_border_width (GTK_CONTAINER (spell_table), 0);
+       gtk_container_set_border_width (GTK_CONTAINER (spell_table), VSPACING);
        gtk_table_set_row_spacings(GTK_TABLE(spell_table), 8);
        gtk_table_set_col_spacings(GTK_TABLE(spell_table), 8);
 
        gtk_box_pack_start(GTK_BOX(vbox_spell), spell_table, TRUE, TRUE, 0);
 
-       
        label_pspell_path = gtk_label_new (_("Dictionaries path:"));
        gtk_misc_set_alignment(GTK_MISC(label_pspell_path), 1.0, 0.5);
        gtk_widget_show(label_pspell_path);
-       gtk_table_attach (GTK_TABLE (spell_table), label_pspell_path, 0, 1, 0, 1,
-                         GTK_FILL, (GTK_EXPAND | GTK_FILL), 0, 0);
+       gtk_table_attach (GTK_TABLE (spell_table), label_pspell_path, 0, 1, 0,
+                         1, GTK_FILL, (GTK_EXPAND | GTK_FILL), 0, 0);
        
        hbox_pspell_path = gtk_hbox_new (FALSE, 8);
-       gtk_table_attach (GTK_TABLE (spell_table), hbox_pspell_path, 1, 2, 0, 1,
-                         GTK_FILL, (GTK_EXPAND | GTK_FILL), 0, 0);
+       gtk_table_attach (GTK_TABLE (spell_table), hbox_pspell_path, 1, 2, 0,
+                         1, GTK_FILL, (GTK_EXPAND | GTK_FILL), 0, 0);
        gtk_widget_show(hbox_pspell_path);
 
        entry_pspell_path = gtk_entry_new();
        gtk_widget_show(entry_pspell_path);
-       gtk_box_pack_start(GTK_BOX(hbox_pspell_path), entry_pspell_path, TRUE, TRUE, 0);        
+       gtk_box_pack_start(GTK_BOX(hbox_pspell_path), entry_pspell_path, TRUE,
+                          TRUE, 0);    
        
        gtk_widget_set_sensitive(entry_pspell_path, prefs_common.enable_pspell);
 
@@ -1472,9 +1508,10 @@ static void prefs_spelling_create()
        optmenu_dictionary = gtk_option_menu_new();
        gtk_widget_show(optmenu_dictionary);
        gtk_option_menu_set_menu(GTK_OPTION_MENU(optmenu_dictionary), 
-                                gtkpspell_dictionary_option_menu_new(prefs_common.pspell_path));
-       gtk_table_attach (GTK_TABLE (spell_table), optmenu_dictionary, 1, 2, 1, 2,
-                         GTK_FILL, (GTK_EXPAND | GTK_FILL), 0, 0);
+                                gtkpspell_dictionary_option_menu_new(
+                                        prefs_common.pspell_path));
+       gtk_table_attach (GTK_TABLE (spell_table), optmenu_dictionary, 1, 2, 1,
+                         2, GTK_FILL, (GTK_EXPAND | GTK_FILL), 0, 0);
        gtk_widget_set_sensitive(optmenu_dictionary, prefs_common.enable_pspell);
 
        /* Suggestion mode */
@@ -1519,6 +1556,7 @@ static void prefs_spelling_create()
        spelling.btn_pspell_path        = btn_pspell_path;
        spelling.optmenu_dictionary     = optmenu_dictionary;
        spelling.optmenu_sugmode        = sugmode_optmenu;
+       spelling.checkbtn_use_alternate = checkbtn_use_alternate;
        spelling.checkbtn_check_while_typing = checkbtn_check_while_typing;
 }
 
@@ -1528,8 +1566,8 @@ static void prefs_spelling_create()
 static void prefs_compose_create(void)
 {
        GtkWidget *vbox1;
-        GtkWidget *vbox2;
-        GtkWidget *vbox3;
+       GtkWidget *vbox2;
+       GtkWidget *vbox3;
        GtkWidget *hbox1;
        GtkWidget *hbox2;
        GtkWidget *btn_quotefmt;
@@ -1545,8 +1583,8 @@ static void prefs_compose_create(void)
        GtkWidget *checkbtn_autoextedit;
 
        GtkWidget *frame_autosel;
-        GtkWidget *hbox_autosel;
-        GtkWidget *vbox_autosel;
+       GtkWidget *hbox_autosel;
+       GtkWidget *vbox_autosel;
        GtkWidget *checkbtn_reply_account_autosel;
        GtkWidget *checkbtn_forward_account_autosel;
        GtkWidget *checkbtn_reedit_account_autosel;
@@ -2347,19 +2385,22 @@ static void prefs_interface_create(void)
        GtkWidget *menuitem;
 
        GtkWidget *frame_addr;
-        GtkWidget *vbox_addr;
+       GtkWidget *vbox_addr;
        GtkWidget *checkbtn_addaddrbyclick;
 
-       GtkWidget *keybind_frame;
-       GtkWidget *keybind_label;
-       GtkWidget *keybind_combo;
-       GtkWidget *keybind_btn;
+       GtkWidget *button_keybind;
 
        GtkWidget *hbox2;
        GtkWidget *optmenu_nextunreadmsgdialog;
        GtkWidget *optmenu_nextunreadmsgdialog_menu;
        GtkWidget *nextunreadmsgdialog_menuitem;
 
+       GtkWidget *frame_pixmap_theme;
+       GtkWidget *vbox_pixmap_theme;
+       GtkWidget *entry_pixmap_theme;
+       GtkWidget *combo_pixmap_theme;
+       GList *avail_pixmap_themes = NULL;
+
        vbox1 = gtk_vbox_new (FALSE, VSPACING);
        gtk_widget_show (vbox1);
        gtk_container_add (GTK_CONTAINER (dialog.notebook), vbox1);
@@ -2483,46 +2524,32 @@ static void prefs_interface_create(void)
 
        gtk_option_menu_set_menu (GTK_OPTION_MENU (recvdialog_optmenu), recvdialog_optmenu_menu);     */
 
-PACK_FRAME(vbox1, keybind_frame, _("Shortcut key"));
-
-       vbox2 = gtk_vbox_new (FALSE, 8);
-       gtk_widget_show (vbox2);
-       gtk_container_add (GTK_CONTAINER (keybind_frame), vbox2);
-       gtk_container_set_border_width (GTK_CONTAINER (vbox2), 8);
-
-       hbox1 = gtk_hbox_new (FALSE, 8);
-       gtk_widget_show (hbox1);
-       gtk_box_pack_start (GTK_BOX (vbox2), hbox1, FALSE, FALSE, 0);
-
-       keybind_label = gtk_label_new
-               (_("Select the preset key bindings.\n"
-                  "You can also modify each menu shortcut by pressing\n"
-                  "any key(s) when placing the mouse pointer on the item."));
-       gtk_widget_show (keybind_label);
-       gtk_box_pack_start (GTK_BOX (hbox1), keybind_label, FALSE, FALSE, 0);
-       gtk_label_set_justify (GTK_LABEL (keybind_label), GTK_JUSTIFY_LEFT);
-
        hbox1 = gtk_hbox_new (FALSE, 8);
        gtk_widget_show (hbox1);
-       gtk_box_pack_start (GTK_BOX (vbox2), hbox1, FALSE, FALSE, 0);
-
-       keybind_combo = gtk_combo_new ();
-       gtk_widget_show (keybind_combo);
-       gtk_box_pack_start (GTK_BOX (hbox1), keybind_combo, TRUE, TRUE, 0);
-       gtkut_combo_set_items (GTK_COMBO (keybind_combo),
-                              _("Default"),
-                              _("Mew / Wanderlust"),
-                              _("Old Sylpheed"),
-                              NULL);
-       gtk_entry_set_editable (GTK_ENTRY (GTK_COMBO (keybind_combo)->entry),
-                               FALSE);
+       gtk_box_pack_start (GTK_BOX (vbox1), hbox1, FALSE, FALSE, 0);
 
-       keybind_btn = gtk_button_new_with_label(_(" Apply "));
-       gtk_widget_show (keybind_btn);
-       gtk_box_pack_end (GTK_BOX (hbox1), keybind_btn, FALSE, TRUE, 0);
-       gtk_signal_connect (GTK_OBJECT (keybind_btn), "clicked",
-                           GTK_SIGNAL_FUNC (prefs_keybind_apply_clicked),
-                           NULL);
+       button_keybind = gtk_button_new_with_label (_(" Set key bindings... "));
+       gtk_widget_show (button_keybind);
+       gtk_box_pack_start (GTK_BOX (hbox1), button_keybind, FALSE, FALSE, 0);
+       gtk_signal_connect (GTK_OBJECT (button_keybind), "clicked",
+                           GTK_SIGNAL_FUNC (prefs_keybind_select), NULL);
+
+       PACK_FRAME(vbox1, frame_pixmap_theme, "Pixmap theme");
+       
+       vbox_pixmap_theme = gtk_vbox_new(FALSE, 0);
+       gtk_widget_show(vbox_pixmap_theme);
+       gtk_container_add(GTK_CONTAINER(frame_pixmap_theme), vbox_pixmap_theme);
+       gtk_container_set_border_width(GTK_CONTAINER(vbox_pixmap_theme), 8);
+       avail_pixmap_themes = stock_pixmap_themes_list_new(); 
+       combo_pixmap_theme = gtk_combo_new ();
+       gtk_widget_show (combo_pixmap_theme);
+       gtk_box_pack_start (GTK_BOX (vbox_pixmap_theme), combo_pixmap_theme, TRUE, TRUE, 0);
+       gtk_combo_set_popdown_strings(GTK_COMBO(combo_pixmap_theme), avail_pixmap_themes);
+       entry_pixmap_theme = GTK_COMBO (combo_pixmap_theme)->entry;
+
+       stock_pixmap_themes_list_free(avail_pixmap_themes);
 
        /* interface.checkbtn_emacs          = checkbtn_emacs; */
        interface.checkbtn_openunread         = checkbtn_openunread;
@@ -2531,24 +2558,24 @@ PACK_FRAME(vbox1, keybind_frame, _("Shortcut key"));
        interface.optmenu_recvdialog          = optmenu_recvdialog;
        interface.checkbtn_addaddrbyclick     = checkbtn_addaddrbyclick;
        interface.optmenu_nextunreadmsgdialog = optmenu_nextunreadmsgdialog;
-       interface.keybind_combo               = keybind_combo;
+       interface.combo_pixmap_theme            = combo_pixmap_theme;
+       interface.entry_pixmap_theme            = entry_pixmap_theme;
 }
 
 static void prefs_other_create(void)
 {
        GtkWidget *vbox1;
+       GtkWidget *ext_frame;
+       GtkWidget *ext_table;
        GtkWidget *hbox1;
 
-       GtkWidget *uri_frame;
        GtkWidget *uri_label;
        GtkWidget *uri_combo;
        GtkWidget *uri_entry;
 
-       GtkWidget *print_frame;
        GtkWidget *printcmd_label;
        GtkWidget *printcmd_entry;
 
-       GtkWidget *exteditor_frame;
        GtkWidget *exteditor_label;
        GtkWidget *exteditor_combo;
        GtkWidget *exteditor_entry;
@@ -2565,21 +2592,26 @@ static void prefs_other_create(void)
        gtk_container_add (GTK_CONTAINER (dialog.notebook), vbox1);
        gtk_container_set_border_width (GTK_CONTAINER (vbox1), VBOX_BORDER);
 
-       PACK_FRAME(vbox1, uri_frame,
-                  _("External Web browser (%s will be replaced with URI)"));
+       PACK_FRAME(vbox1, ext_frame,
+                  _("External commands (%s will be replaced with file name / URI)"));
 
-       hbox1 = gtk_hbox_new (FALSE, 8);
-       gtk_widget_show (hbox1);
-       gtk_container_add (GTK_CONTAINER (uri_frame), hbox1);
-       gtk_container_set_border_width (GTK_CONTAINER (hbox1), 8);
+       ext_table = gtk_table_new (3, 2, FALSE);
+       gtk_widget_show (ext_table);
+       gtk_container_add (GTK_CONTAINER (ext_frame), ext_table);
+       gtk_container_set_border_width (GTK_CONTAINER (ext_table), 8);
+       gtk_table_set_row_spacings (GTK_TABLE (ext_table), VSPACING_NARROW);
+       gtk_table_set_col_spacings (GTK_TABLE (ext_table), 8);
 
-       uri_label = gtk_label_new (_("Command"));
+       uri_label = gtk_label_new (_("Web browser"));
        gtk_widget_show(uri_label);
-       gtk_box_pack_start (GTK_BOX (hbox1), uri_label, FALSE, TRUE, 0);
+       gtk_table_attach (GTK_TABLE (ext_table), uri_label, 0, 1, 0, 1,
+                         GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 0);
+       gtk_misc_set_alignment (GTK_MISC (uri_label), 1, 0.5);
 
        uri_combo = gtk_combo_new ();
        gtk_widget_show (uri_combo);
-       gtk_box_pack_start (GTK_BOX (hbox1), uri_combo, TRUE, TRUE, 0);
+       gtk_table_attach (GTK_TABLE (ext_table), uri_combo, 1, 2, 0, 1,
+                         GTK_EXPAND | GTK_FILL, 0, 0, 0);
        gtkut_combo_set_items (GTK_COMBO (uri_combo),
                               "netscape -remote 'openURL(%s,raise)'",
                               "netscape '%s'",
@@ -2587,40 +2619,29 @@ static void prefs_other_create(void)
                               "kterm -e w3m '%s'",
                               "kterm -e lynx '%s'",
                               NULL);
-
        uri_entry = GTK_COMBO (uri_combo)->entry;
 
-       PACK_FRAME(vbox1, print_frame,
-                  _("Printing (%s will be replaced with file name)"));
-
-       hbox1 = gtk_hbox_new (FALSE, 8);
-       gtk_widget_show (hbox1);
-       gtk_container_add (GTK_CONTAINER (print_frame), hbox1);
-       gtk_container_set_border_width (GTK_CONTAINER (hbox1), 8);
-
-       printcmd_label = gtk_label_new (_("Command"));
+       printcmd_label = gtk_label_new (_("Print"));
        gtk_widget_show (printcmd_label);
-       gtk_box_pack_start (GTK_BOX (hbox1), printcmd_label, FALSE, FALSE, 0);
+       gtk_table_attach (GTK_TABLE (ext_table), printcmd_label, 0, 1, 1, 2,
+                         GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 0);
+       gtk_misc_set_alignment (GTK_MISC (printcmd_label), 1, 0.5);
 
        printcmd_entry = gtk_entry_new ();
        gtk_widget_show (printcmd_entry);
-       gtk_box_pack_start (GTK_BOX (hbox1), printcmd_entry, TRUE, TRUE, 0);
-
-       PACK_FRAME(vbox1, exteditor_frame,
-                  _("External editor (%s will be replaced with file name)"));
+       gtk_table_attach (GTK_TABLE (ext_table), printcmd_entry, 1, 2, 1, 2,
+                         GTK_EXPAND | GTK_FILL, 0, 0, 0);
 
-       hbox1 = gtk_hbox_new (FALSE, 8);
-       gtk_widget_show (hbox1);
-       gtk_container_add (GTK_CONTAINER (exteditor_frame), hbox1);
-       gtk_container_set_border_width (GTK_CONTAINER (hbox1), 8);
-
-       exteditor_label = gtk_label_new (_("Command"));
+       exteditor_label = gtk_label_new (_("Editor"));
        gtk_widget_show (exteditor_label);
-       gtk_box_pack_start (GTK_BOX (hbox1), exteditor_label, FALSE, FALSE, 0);
+       gtk_table_attach (GTK_TABLE (ext_table), exteditor_label, 0, 1, 2, 3,
+                         GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 0);
+       gtk_misc_set_alignment (GTK_MISC (exteditor_label), 1, 0.5);
 
        exteditor_combo = gtk_combo_new ();
        gtk_widget_show (exteditor_combo);
-       gtk_box_pack_start (GTK_BOX (hbox1), exteditor_combo, TRUE, TRUE, 0);
+       gtk_table_attach (GTK_TABLE (ext_table), exteditor_combo, 1, 2, 2, 3,
+                         GTK_EXPAND | GTK_FILL, 0, 0, 0);
        gtkut_combo_set_items (GTK_COMBO (exteditor_combo),
                               "gedit %s",
                               "kedit %s",
@@ -2791,29 +2812,29 @@ static GtkWidget *date_format_create(GtkButton *button, void *data)
        GtkWidget *cancel_btn;
        GtkWidget *datefmt_entry;
 
-       const struct {
+       struct {
                gchar *fmt;
                gchar *txt;
        } time_format[] = {
-               { "%a", _("the full abbreviated weekday name") },
-               { "%A", _("the full weekday name") },
-               { "%b", _("the abbreviated month name") },
-               { "%B", _("the full month name") },
-               { "%c", _("the preferred date and time for the current locale") },
-               { "%C", _("the century number (year/100)") },
-               { "%d", _("the day of the month as a decimal number") },
-               { "%H", _("the hour as a decimal number using a 24-hour clock") },
-               { "%I", _("the hour as a decimal number using a 12-hour clock") },
-               { "%j", _("the day of the year as a decimal number") },
-               { "%m", _("the month as a decimal number") },
-               { "%M", _("the minute as a decimal number") },
-               { "%p", _("either AM or PM") },
-               { "%S", _("the second as a decimal number") },
-               { "%w", _("the day of the week as a decimal number") },
-               { "%x", _("the preferred date for the current locale") },
-               { "%y", _("the last two digits of a year") },
-               { "%Y", _("the year as a decimal number") },
-               { "%Z", _("the time zone or name or abbreviation") }
+               { "%a", NULL },
+               { "%A", NULL },
+               { "%b", NULL },
+               { "%B", NULL },
+               { "%c", NULL },
+               { "%C", NULL },
+               { "%d", NULL },
+               { "%H", NULL },
+               { "%I", NULL },
+               { "%j", NULL },
+               { "%m", NULL },
+               { "%M", NULL },
+               { "%p", NULL },
+               { "%S", NULL },
+               { "%w", NULL },
+               { "%x", NULL },
+               { "%y", NULL },
+               { "%Y", NULL },
+               { "%Z", NULL }
        };
 
        gchar *titles[2];
@@ -2821,6 +2842,26 @@ static GtkWidget *date_format_create(GtkButton *button, void *data)
        const gint TIME_FORMAT_ELEMS =
                sizeof time_format / sizeof time_format[0];
 
+       time_format[0].txt  = _("the full abbreviated weekday name");
+       time_format[1].txt  = _("the full weekday name");
+       time_format[2].txt  = _("the abbreviated month name");
+       time_format[3].txt  = _("the full month name");
+       time_format[4].txt  = _("the preferred date and time for the current locale");
+       time_format[5].txt  = _("the century number (year/100)");
+       time_format[6].txt  = _("the day of the month as a decimal number");
+       time_format[7].txt  = _("the hour as a decimal number using a 24-hour clock");
+       time_format[8].txt  = _("the hour as a decimal number using a 12-hour clock");
+       time_format[9].txt  = _("the day of the year as a decimal number");
+       time_format[10].txt = _("the month as a decimal number");
+       time_format[11].txt = _("the minute as a decimal number");
+       time_format[12].txt = _("either AM or PM");
+       time_format[13].txt = _("the second as a decimal number");
+       time_format[14].txt = _("the day of the week as a decimal number");
+       time_format[15].txt = _("the preferred date for the current locale");
+       time_format[16].txt = _("the last two digits of a year");
+       time_format[17].txt = _("the year as a decimal number");
+       time_format[18].txt = _("the time zone or name or abbreviation");
+
        if (datefmt_win) return datefmt_win;
 
        datefmt_win = gtk_window_new(GTK_WINDOW_DIALOG);
@@ -3462,14 +3503,110 @@ static void prefs_font_selection_ok(GtkButton *button, GtkEntry *entry)
        gtk_widget_hide(font_sel_win);
 }
 
+static void prefs_keybind_select(void)
+{
+       GtkWidget *window;
+       GtkWidget *vbox1;
+       GtkWidget *hbox1;
+       GtkWidget *label;
+       GtkWidget *combo;
+       GtkWidget *confirm_area;
+       GtkWidget *ok_btn;
+       GtkWidget *cancel_btn;
+
+       window = gtk_window_new (GTK_WINDOW_DIALOG);
+       gtk_container_set_border_width (GTK_CONTAINER (window), 8);
+       gtk_window_set_title (GTK_WINDOW (window), _("Key bindings"));
+       gtk_window_set_position (GTK_WINDOW (window), GTK_WIN_POS_CENTER);
+       gtk_window_set_modal (GTK_WINDOW (window), TRUE);
+       gtk_window_set_policy (GTK_WINDOW (window), FALSE, FALSE, FALSE);
+       manage_window_set_transient (GTK_WINDOW (window));
+
+       vbox1 = gtk_vbox_new (FALSE, VSPACING);
+       gtk_container_add (GTK_CONTAINER (window), vbox1);
+       gtk_container_set_border_width (GTK_CONTAINER (vbox1), 2);
+
+       hbox1 = gtk_hbox_new (FALSE, 8);
+       gtk_box_pack_start (GTK_BOX (vbox1), hbox1, FALSE, FALSE, 0);
+
+       label = gtk_label_new
+               (_("Select the preset of key bindings.\n"
+                  "You can also modify each menu's shortcuts by pressing\n"
+                  "any key(s) when placing the mouse pointer on the item."));
+       gtk_box_pack_start (GTK_BOX (hbox1), label, FALSE, FALSE, 0);
+       gtk_label_set_justify (GTK_LABEL (label), GTK_JUSTIFY_LEFT);
+
+       hbox1 = gtk_hbox_new (FALSE, 8);
+       gtk_box_pack_start (GTK_BOX (vbox1), hbox1, FALSE, FALSE, 0);
+
+       combo = gtk_combo_new ();
+       gtk_box_pack_start (GTK_BOX (hbox1), combo, TRUE, TRUE, 0);
+       gtkut_combo_set_items (GTK_COMBO (combo),
+                              _("Default"),
+                              "Mew / Wanderlust",
+                              "Mutt",
+                              _("Old Sylpheed"),
+                              NULL);
+       gtk_entry_set_editable (GTK_ENTRY (GTK_COMBO (combo)->entry), FALSE);
+
+       hbox1 = gtk_hbox_new (FALSE, 8);
+       gtk_box_pack_start (GTK_BOX (vbox1), hbox1, FALSE, FALSE, 0);
+
+       gtkut_button_set_create (&confirm_area, &ok_btn, _("OK"),
+                                &cancel_btn, _("Cancel"), NULL, NULL);
+       gtk_box_pack_end (GTK_BOX (hbox1), confirm_area, FALSE, FALSE, 0);
+       gtk_widget_grab_default (ok_btn);
+
+       gtk_signal_connect (GTK_OBJECT (window), "focus_in_event",
+                           GTK_SIGNAL_FUNC (manage_window_focus_in), NULL);
+       gtk_signal_connect (GTK_OBJECT (window), "focus_out_event",
+                           GTK_SIGNAL_FUNC (manage_window_focus_out), NULL);
+       gtk_signal_connect (GTK_OBJECT (window), "delete_event",
+                           GTK_SIGNAL_FUNC (prefs_keybind_deleted), NULL);
+       gtk_signal_connect (GTK_OBJECT (window), "key_press_event",
+                           GTK_SIGNAL_FUNC (prefs_keybind_key_pressed), NULL);
+       gtk_signal_connect (GTK_OBJECT (ok_btn), "clicked",
+                           GTK_SIGNAL_FUNC (prefs_keybind_apply_clicked),
+                           NULL);
+       gtk_signal_connect (GTK_OBJECT (cancel_btn), "clicked",
+                           GTK_SIGNAL_FUNC (prefs_keybind_cancel),
+                           NULL);
+
+       gtk_widget_show_all(window);
+
+       keybind.window = window;
+       keybind.combo = combo;
+}
+
+static void prefs_keybind_key_pressed(GtkWidget *widget, GdkEventKey *event,
+                                     gpointer data)
+{
+       if (event && event->keyval == GDK_Escape)
+               prefs_keybind_cancel();
+}
+
+static gint prefs_keybind_deleted(GtkWidget *widget, GdkEventAny *event,
+                                 gpointer data)
+{
+       prefs_keybind_cancel();
+       return TRUE;
+}
+
+static void prefs_keybind_cancel(void)
+{
+       gtk_widget_destroy(keybind.window);
+       keybind.window = NULL;
+       keybind.combo = NULL;
+}
+
 static void prefs_keybind_apply_clicked(GtkWidget *widget)
 {
-       GtkEntry *entry = GTK_ENTRY(GTK_COMBO(interface.keybind_combo)->entry);
+       GtkEntry *entry = GTK_ENTRY(GTK_COMBO(keybind.combo)->entry);
        gchar *text;
        gchar *rc_str;
 
        static gchar *default_menurc =
-               "(menu-path \"<Main>/File/Empty trash\" \"<shift>D\")\n"
+               "(menu-path \"<Main>/File/Empty trash\" \"\")\n"
                "(menu-path \"<Main>/File/Save as...\" \"<control>S\")\n"
                "(menu-path \"<Main>/File/Print...\" \"\")\n"
                "(menu-path \"<Main>/File/Exit\" \"<control>Q\")\n"
@@ -3495,25 +3632,36 @@ static void prefs_keybind_apply_clicked(GtkWidget *widget)
 
                "(menu-path \"<Main>/Message/Get new mail\" \"<control>I\")\n"
                "(menu-path \"<Main>/Message/Get from all accounts\" \"<shift><control>I\")\n"
-               "(menu-path \"<Main>/Message/Compose an email message\" \"<shift><control>N\")\n"
+               "(menu-path \"<Main>/Message/Compose an email message\" \"<control>M\")\n"
                "(menu-path \"<Main>/Message/Reply\" \"<control>R\")\n"
-               "(menu-path \"<Main>/Message/Reply to sender\" \"<control><alt>R\")\n"
+               "(menu-path \"<Main>/Message/Reply to sender\" \"\")\n"
                "(menu-path \"<Main>/Message/Reply to all\" \"<shift><control>R\")\n"
                "(menu-path \"<Main>/Message/Forward\" \"<control><alt>F\")\n"
                /* "(menu-path \"<Main>/Message/Forward as attachment\" \"\")\n" */
                "(menu-path \"<Main>/Message/Move...\" \"<control>O\")\n"
                "(menu-path \"<Main>/Message/Copy...\" \"<shift><control>O\")\n"
                "(menu-path \"<Main>/Message/Delete\" \"<control>D\")\n"
+               "(menu-path \"<Main>/Message/Mark/Mark\" \"<shift>asterisk\")\n"
                "(menu-path \"<Main>/Message/Mark/Unmark\" \"U\")\n"
+               "(menu-path \"<Main>/Message/Mark/Mark as unread\" \"<shift>exclam\")\n"
+               "(menu-path \"<Main>/Message/Mark/Mark as read\" \"\")\n"
 
                "(menu-path \"<Main>/Tool/Address book\" \"<shift><control>A\")\n"
                "(menu-path \"<Main>/Tool/Execute\" \"X\")\n"
-               "(menu-path \"<Main>/Tool/Log window\" \"<control>L\")";
+               "(menu-path \"<Main>/Tool/Log window\" \"<control>L\")\n"
+
+               "(menu-path \"<Compose>/File/Close\" \"<control>W\")\n"
+               "(menu-path \"<Compose>/Edit/Select all\" \"<control>A\")\n"
+               "(menu-path \"<Compose>/Edit/Advanced/Move a word backward\" \"\")\n"
+               "(menu-path \"<Compose>/Edit/Advanced/Move a word forward\" \"\")\n"
+               "(menu-path \"<Compose>/Edit/Advanced/Move to beginning of line\" \"\")\n"
+               "(menu-path \"<Compose>/Edit/Advanced/Delete a word backward\" \"\")\n"
+               "(menu-path \"<Compose>/Edit/Advanced/Delete a word forward\" \"\")";
 
        static gchar *mew_wl_menurc =
                "(menu-path \"<Main>/File/Empty trash\" \"<shift>D\")\n"
                "(menu-path \"<Main>/File/Save as...\" \"Y\")\n"
-               "(menu-path \"<Main>/File/Print...\" \"\")\n"
+               "(menu-path \"<Main>/File/Print...\" \"<shift>numbersign\")\n"
                "(menu-path \"<Main>/File/Exit\" \"<shift>Q\")\n"
 
                "(menu-path \"<Main>/Edit/Copy\" \"<control>C\")\n"
@@ -3523,7 +3671,7 @@ static void prefs_keybind_apply_clicked(GtkWidget *widget)
 
                "(menu-path \"<Main>/View/Expand Summary View\" \"\")\n"
                "(menu-path \"<Main>/View/Expand Message View\" \"\")\n"
-               "(menu-path \"<Main>/View/Thread view\" \"<control>T\")\n"
+               "(menu-path \"<Main>/View/Thread view\" \"<shift>T\")\n"
                "(menu-path \"<Main>/View/Unthread view\" \"<shift><control>T\")\n"
                "(menu-path \"<Main>/View/Go to/Prev message\" \"P\")\n"
                "(menu-path \"<Main>/View/Go to/Next message\" \"N\")\n"
@@ -3532,8 +3680,8 @@ static void prefs_keybind_apply_clicked(GtkWidget *widget)
                "(menu-path \"<Main>/View/Go to/Other folder...\" \"G\")\n"
                "(menu-path \"<Main>/View/Open in new window\" \"<control><alt>N\")\n"
                "(menu-path \"<Main>/View/View source\" \"<control>U\")\n"
-               "(menu-path \"<Main>/View/Show all header\" \"<control>H\")\n"
-               "(menu-path \"<Main>/View/Update\" \"<control><alt>U\")\n"
+               "(menu-path \"<Main>/View/Show all header\" \"<shift>H\")\n"
+               "(menu-path \"<Main>/View/Update\" \"<shift>S\")\n"
 
                "(menu-path \"<Main>/Message/Get new mail\" \"<control>I\")\n"
                "(menu-path \"<Main>/Message/Get from all accounts\" \"<shift><control>I\")\n"
@@ -3546,11 +3694,74 @@ static void prefs_keybind_apply_clicked(GtkWidget *widget)
                "(menu-path \"<Main>/Message/Move...\" \"O\")\n"
                "(menu-path \"<Main>/Message/Copy...\" \"<shift>O\")\n"
                "(menu-path \"<Main>/Message/Delete\" \"D\")\n"
+               "(menu-path \"<Main>/Message/Mark/Mark\" \"<shift>asterisk\")\n"
                "(menu-path \"<Main>/Message/Mark/Unmark\" \"U\")\n"
+               "(menu-path \"<Main>/Message/Mark/Mark as unread\" \"<shift>exclam\")\n"
+               "(menu-path \"<Main>/Message/Mark/Mark as read\" \"<shift>R\")\n"
 
                "(menu-path \"<Main>/Tool/Address book\" \"<shift><control>A\")\n"
                "(menu-path \"<Main>/Tool/Execute\" \"X\")\n"
-               "(menu-path \"<Main>/Tool/Log window\" \"<control>L\")";
+               "(menu-path \"<Main>/Tool/Log window\" \"<control>L\")\n"
+
+               "(menu-path \"<Compose>/File/Close\" \"<alt>W\")\n"
+               "(menu-path \"<Compose>/Edit/Select all\" \"\")\n"
+               "(menu-path \"<Compose>/Edit/Advanced/Move a word backward\" \"<alt>B\")\n"
+               "(menu-path \"<Compose>/Edit/Advanced/Move a word forward\" \"<alt>F\")\n"
+               "(menu-path \"<Compose>/Edit/Advanced/Move to beginning of line\" \"<control>A\")\n"
+               "(menu-path \"<Compose>/Edit/Advanced/Delete a word backward\" \"<control>W\")\n"
+               "(menu-path \"<Compose>/Edit/Advanced/Delete a word forward\" \"<alt>D\")";
+
+       static gchar *mutt_menurc =
+               "(menu-path \"<Main>/File/Empty trash\" \"\")\n"
+               "(menu-path \"<Main>/File/Save as...\" \"S\")\n"
+               "(menu-path \"<Main>/File/Print...\" \"P\")\n"
+               "(menu-path \"<Main>/File/Exit\" \"Q\")\n"
+
+               "(menu-path \"<Main>/Edit/Copy\" \"<control>C\")\n"
+               "(menu-path \"<Main>/Edit/Select all\" \"<control>A\")\n"
+               "(menu-path \"<Main>/Edit/Find in current message...\" \"<control>F\")\n"
+               "(menu-path \"<Main>/Edit/Search messages...\" \"slash\")\n"
+
+               "(menu-path \"<Main>/View/Toggle summary view\" \"V\")\n"
+               "(menu-path \"<Main>/View/Thread view\" \"<control>T\")\n"
+               "(menu-path \"<Main>/View/Unthread view\" \"<shift><control>T\")\n"
+               "(menu-path \"<Main>/View/Go to/Prev message\" \"\")\n"
+               "(menu-path \"<Main>/View/Go to/Next message\" \"\")\n"
+               "(menu-path \"<Main>/View/Go to/Prev unread message\" \"\")\n"
+               "(menu-path \"<Main>/View/Go to/Next unread message\" \"\")\n"
+               "(menu-path \"<Main>/View/Go to/Other folder...\" \"C\")\n"
+               "(menu-path \"<Main>/View/Open in new window\" \"<control><alt>N\")\n"
+               "(menu-path \"<Main>/View/View source\" \"<control>U\")\n"
+               "(menu-path \"<Main>/View/Show all header\" \"<control>H\")\n"
+               "(menu-path \"<Main>/View/Update\" \"<control><alt>U\")\n"
+
+               "(menu-path \"<Main>/Message/Get new mail\" \"<control>I\")\n"
+               "(menu-path \"<Main>/Message/Get from all accounts\" \"<shift><control>I\")\n"
+               "(menu-path \"<Main>/Message/Compose new message\" \"M\")\n"
+               "(menu-path \"<Main>/Message/Reply\" \"R\")\n"
+               "(menu-path \"<Main>/Message/Reply to all\" \"G\")\n"
+               "(menu-path \"<Main>/Message/Reply to sender\" \"\")\n"
+               "(menu-path \"<Main>/Message/Forward\" \"F\")\n"
+               "(menu-path \"<Main>/Message/Forward as attachment\" \"\")\n"
+               "(menu-path \"<Main>/Message/Move...\" \"<control>O\")\n"
+               "(menu-path \"<Main>/Message/Copy...\" \"<shift>C\")\n"
+               "(menu-path \"<Main>/Message/Delete\" \"D\")\n"
+               "(menu-path \"<Main>/Message/Mark/Mark\" \"<shift>F\")\n"
+               "(menu-path \"<Main>/Message/Mark/Unmark\" \"U\")\n"
+               "(menu-path \"<Main>/Message/Mark/Mark as unread\" \"<shift>N\")\n"
+               "(menu-path \"<Main>/Message/Mark/Mark as read\" \"\")\n"
+
+               "(menu-path \"<Main>/Tool/Address book\" \"<shift><control>A\")\n"
+               "(menu-path \"<Main>/Tool/Execute\" \"X\")\n"
+               "(menu-path \"<Main>/Tool/Log window\" \"<control>L\")\n"
+
+               "(menu-path \"<Compose>/File/Close\" \"<alt>W\")\n"
+               "(menu-path \"<Compose>/Edit/Select all\" \"\")\n"
+               "(menu-path \"<Compose>/Edit/Advanced/Move a word backward\" \"<alt>B\")\n"
+               "(menu-path \"<Compose>/Edit/Advanced/Move a word forward\" \"<alt>F\")\n"
+               "(menu-path \"<Compose>/Edit/Advanced/Move to beginning of line\" \"<control>A\")\n"
+               "(menu-path \"<Compose>/Edit/Advanced/Delete a word backward\" \"<control>W\")\n"
+               "(menu-path \"<Compose>/Edit/Advanced/Delete a word forward\" \"<alt>D\")";
 
        static gchar *old_sylpheed_menurc =
                "(menu-path \"<Main>/File/Empty trash\" \"\")\n"
@@ -3588,11 +3799,22 @@ static void prefs_keybind_apply_clicked(GtkWidget *widget)
                "(menu-path \"<Main>/Message/Move...\" \"<alt>O\")\n"
                "(menu-path \"<Main>/Message/Copy...\" \"\")\n"
                "(menu-path \"<Main>/Message/Delete\" \"<alt>D\")\n"
+               "(menu-path \"<Main>/Message/Mark/Mark\" \"<shift>asterisk\")\n"
                "(menu-path \"<Main>/Message/Mark/Unmark\" \"U\")\n"
+               "(menu-path \"<Main>/Message/Mark/Mark as unread\" \"<shift>exclam\")\n"
+               "(menu-path \"<Main>/Message/Mark/Mark as read\" \"\")\n"
 
                "(menu-path \"<Main>/Tool/Address book\" \"<alt>A\")\n"
                "(menu-path \"<Main>/Tool/Execute\" \"<alt>X\")\n"
-               "(menu-path \"<Main>/Tool/Log window\" \"<alt>L\")";
+               "(menu-path \"<Main>/Tool/Log window\" \"<alt>L\")\n"
+
+               "(menu-path \"<Compose>/File/Close\" \"<alt>W\")\n"
+               "(menu-path \"<Compose>/Edit/Select all\" \"\")\n"
+               "(menu-path \"<Compose>/Edit/Advanced/Move a word backward\" \"<alt>B\")\n"
+               "(menu-path \"<Compose>/Edit/Advanced/Move a word forward\" \"<alt>F\")\n"
+               "(menu-path \"<Compose>/Edit/Advanced/Move to beginning of line\" \"<control>A\")\n"
+               "(menu-path \"<Compose>/Edit/Advanced/Delete a word backward\" \"<control>W\")\n"
+               "(menu-path \"<Compose>/Edit/Advanced/Delete a word forward\" \"<alt>D\")";
 
        static gchar *empty_menurc =
                "(menu-path \"<Main>/File/Empty trash\" \"\")\n"
@@ -3630,18 +3852,31 @@ static void prefs_keybind_apply_clicked(GtkWidget *widget)
                "(menu-path \"<Main>/Message/Move...\" \"\")\n"
                "(menu-path \"<Main>/Message/Copy...\" \"\")\n"
                "(menu-path \"<Main>/Message/Delete\" \"\")\n"
+               "(menu-path \"<Main>/Message/Mark/Mark\" \"\")\n"
                "(menu-path \"<Main>/Message/Mark/Unmark\" \"\")\n"
+               "(menu-path \"<Main>/Message/Mark/Mark as unread\" \"\")\n"
+               "(menu-path \"<Main>/Message/Mark/Mark as read\" \"\")\n"
 
                "(menu-path \"<Main>/Tool/Address book\" \"\")\n"
                "(menu-path \"<Main>/Tool/Execute\" \"\")\n"
-               "(menu-path \"<Main>/Tool/Log window\" \"\")";
+               "(menu-path \"<Main>/Tool/Log window\" \"\")\n"
+
+               "(menu-path \"<Compose>/File/Close\" \"\")\n"
+               "(menu-path \"<Compose>/Edit/Select all\" \"\")\n"
+               "(menu-path \"<Compose>/Edit/Advanced/Move a word backward\" \"\")\n"
+               "(menu-path \"<Compose>/Edit/Advanced/Move a word forward\" \"\")\n"
+               "(menu-path \"<Compose>/Edit/Advanced/Move to beginning of line\" \"\")\n"
+               "(menu-path \"<Compose>/Edit/Advanced/Delete a word backward\" \"\")\n"
+               "(menu-path \"<Compose>/Edit/Advanced/Delete a word forward\" \"\")";
 
        text = gtk_entry_get_text(entry);
 
        if (!strcmp(text, _("Default")))
                rc_str = default_menurc;
-       else if (!strcmp(text, _("Mew / Wanderlust")))
+       else if (!strcmp(text, "Mew / Wanderlust"))
                rc_str = mew_wl_menurc;
+       else if (!strcmp(text, "Mutt"))
+               rc_str = mutt_menurc;
        else if (!strcmp(text, _("Old Sylpheed")))
                rc_str = old_sylpheed_menurc;
        else
@@ -3649,6 +3884,10 @@ static void prefs_keybind_apply_clicked(GtkWidget *widget)
 
        gtk_item_factory_parse_rc_string(empty_menurc);
        gtk_item_factory_parse_rc_string(rc_str);
+
+       gtk_widget_destroy(keybind.window);
+       keybind.window = NULL;
+       keybind.combo = NULL;
 }
 
 static void prefs_common_charset_set_data_from_optmenu(PrefParam *pparam)
@@ -3756,6 +3995,8 @@ static void prefs_common_apply(void)
 {
        prefs_set_data_from_dialog(param);
        main_window_reflect_prefs_all();
+       main_window_reflect_prefs_pixmap_theme();
+       compose_reflect_prefs_pixmap_theme();
        prefs_common_save_config();
 
        inc_autocheck_timer_remove();