sync with sylpheed 0.6.4 release
[claws.git] / src / mainwindow.c
index 63fdb96ecd0ef6fc44d2573cfa38caf114b44eac..408e991717bcd10be1e2f1a9479f6d633976dd12 100644 (file)
@@ -63,6 +63,7 @@
 #include "prefs_scoring.h"
 #include "prefs_account.h"
 #include "prefs_folder_item.h"
+#include "prefs_summary_column.h"
 #include "account.h"
 #include "addressbook.h"
 #include "headerwindow.h"
@@ -400,7 +401,7 @@ static GtkItemFactoryEntry mainwin_entries[] =
        {N_("/_File"),                          NULL, NULL, 0, "<Branch>"},
        {N_("/_File/_Add mailbox..."),          NULL, add_mailbox_cb, 0, NULL},
        {N_("/_File/_Add mbox mailbox..."),     NULL, add_mbox_cb, 0, NULL},
-       {N_("/_File/_Update folder tree"),      NULL, update_folderview_cb, 0, NULL},
+       {N_("/_File/_Rescan folder tree"),      NULL, update_folderview_cb, 0, NULL},
        {N_("/_File/_Folder"),                  NULL, NULL, 0, "<Branch>"},
        {N_("/_File/_Folder/Create _new folder..."),
                                                NULL, new_folder_cb, 0, NULL},
@@ -946,13 +947,23 @@ void main_window_reflect_prefs_all(void)
                else
                        gtk_widget_show(mainwin->exec_btn);
 
-               summary_change_display_item(mainwin->summaryview);
                summary_redisplay_msg(mainwin->summaryview);
                headerview_set_visibility(mainwin->messageview->headerview,
                                          prefs_common.display_header_pane);
        }
 }
 
+void main_window_set_summary_column(void)
+{
+       GList *cur;
+       MainWindow *mainwin;
+
+       for (cur = mainwin_list; cur != NULL; cur = cur->next) {
+               mainwin = (MainWindow *)cur->data;
+               summary_set_column_order(mainwin->summaryview);
+       }
+}
+
 void main_window_set_account_menu(GList *account_list)
 {
        GList *cur, *cur_ac, *cur_item;
@@ -1004,11 +1015,8 @@ static void main_window_show_cur_account(MainWindow *mainwin)
        gtk_window_set_title(GTK_WINDOW(mainwin->window), buf);
        g_free(buf);
 
-       /* buf = g_strdup_printf(_("Current account: %s"), ac_name);
-       gtk_label_set_text(GTK_LABEL(mainwin->ac_label), buf);   */
        gtk_label_set_text(GTK_LABEL(mainwin->ac_label), ac_name);
        gtk_widget_queue_resize(mainwin->ac_button);
-       /* g_free(buf); */
 
        g_free(ac_name);
 }
@@ -1231,6 +1239,7 @@ static SensitiveCond main_window_get_current_state(MainWindow *mainwin)
 {
        SensitiveCond state = 0;
        SummarySelection selection;
+       FolderItem *item = mainwin->summaryview->folder_item;
 
        selection = summary_get_selection_type(mainwin->summaryview);
 
@@ -1238,8 +1247,8 @@ static SensitiveCond main_window_get_current_state(MainWindow *mainwin)
                state |= M_UNLOCKED;
        if (selection != SUMMARY_NONE)
                state |= M_MSG_EXIST;
-       if (mainwin->summaryview->folder_item) {
-               if (mainwin->summaryview->folder_item->threaded)
+       if (item) {
+               if (item->threaded)
                        state |= M_THREADED;
                else
                        state |= M_UNTHREADED;  
@@ -1249,16 +1258,15 @@ static SensitiveCond main_window_get_current_state(MainWindow *mainwin)
                state |= M_TARGET_EXIST;
        if (selection == SUMMARY_SELECTED_SINGLE)
                state |= M_SINGLE_TARGET_EXIST;
-       if (mainwin->summaryview->folder_item &&
-           mainwin->summaryview->folder_item->folder->type != F_NEWS)
+       if (item && item->folder->type != F_NEWS)
                state |= M_EXEC;
        if (mainwin->summaryview->folder_item &&
            mainwin->summaryview->folder_item->folder->type == F_NEWS)
                state |= M_NEWS;
        if (selection == SUMMARY_SELECTED_SINGLE &&
-           (mainwin->summaryview->folder_item &&
-            (mainwin->summaryview->folder_item->stype == F_DRAFT ||
-             mainwin->summaryview->folder_item->stype == F_QUEUE)))
+           (item &&
+            (item->stype == F_OUTBOX || item->stype == F_DRAFT ||
+             item->stype == F_QUEUE)))
                state |= M_ALLOW_REEDIT;
        if (cur_account)
                state |= M_HAVE_ACCOUNT;
@@ -1313,7 +1321,7 @@ void main_window_set_menu_sensitive(MainWindow *mainwin)
        } entry[] = {
                {"/File/Add mailbox..."        , M_UNLOCKED},
                 {"/File/Add mbox mailbox..."   , M_UNLOCKED},
-               {"/File/Update folder tree"    , M_UNLOCKED},
+               {"/File/Rescan folder tree"    , M_UNLOCKED},
                {"/File/Folder"                , M_UNLOCKED},
                {"/File/Import mbox file..."   , M_UNLOCKED},
                {"/File/Export to mbox file...", M_UNLOCKED},
@@ -1381,8 +1389,8 @@ void main_window_popup(MainWindow *mainwin)
        gdk_window_get_origin(mainwin->window->window, &x, &y);
        sx = gdk_screen_width();
        sy = gdk_screen_height();
-       x %= sx; if (x < 0) x += sx;
-       y %= sy; if (y < 0) y += sy;
+       x %= sx; if (x < 0) x = 0;
+       y %= sy; if (y < 0) y = 0;
        gdk_window_move(mainwin->window->window, x, y);
        gdk_window_raise(mainwin->window->window);
        gdk_window_show(mainwin->window->window);
@@ -1393,30 +1401,30 @@ void main_window_popup(MainWindow *mainwin)
        case SEPARATE_FOLDER:
                widget = mainwin->win.sep_folder.folderwin;
                gdk_window_get_origin(widget->window, &x, &y);
-               x %= sx; if (x < 0) x += sx;
-               y %= sy; if (y < 0) y += sy;
+               x %= sx; if (x < 0) x = 0;
+               y %= sy; if (y < 0) y = 0;
                gdk_window_move(widget->window, x, y);
                gdk_window_raise(widget->window);
                break;
        case SEPARATE_MESSAGE:
                widget = mainwin->win.sep_message.messagewin;
                gdk_window_get_origin(widget->window, &x, &y);
-               x %= sx; if (x < 0) x += sx;
-               y %= sy; if (y < 0) y += sy;
+               x %= sx; if (x < 0) x = 0;
+               y %= sy; if (y < 0) y = 0;
                gdk_window_move(widget->window, x, y);
                gdk_window_raise(widget->window);
                break;
        case SEPARATE_BOTH:
                widget = mainwin->win.sep_both.folderwin;
                gdk_window_get_origin(widget->window, &x, &y);
-               x %= sx; if (x < 0) x += sx;
-               y %= sy; if (y < 0) y += sy;
+               x %= sx; if (x < 0) x = 0;
+               y %= sy; if (y < 0) y = 0;
                gdk_window_move(widget->window, x, y);
                gdk_window_raise(widget->window);
                widget = mainwin->win.sep_both.messagewin;
                gdk_window_get_origin(widget->window, &x, &y);
-               x %= sx; if (x < 0) x += sx;
-               y %= sy; if (y < 0) y += sy;
+               x %= sx; if (x < 0) x = 0;
+               y %= sy; if (y < 0) y = 0;
                gdk_window_move(widget->window, x, y);
                gdk_window_raise(widget->window);
                break;
@@ -2441,7 +2449,7 @@ static void reply_cb(MainWindow *mainwin, guint action, GtkWidget *widget)
                break;
        case COMPOSE_REPLY_TO_ALL:
                compose_reply(msginfo, prefs_common.reply_with_quote,
-                             TRUE, FALSE);
+                             TRUE, TRUE);
                break;
        case COMPOSE_FORWARD:
                if (!sel->next) {
@@ -2555,7 +2563,7 @@ static void thread_cb(MainWindow *mainwin, guint action, GtkWidget *widget)
        ifactory = gtk_item_factory_from_widget(widget);
 
        if (0 == action) {
-               summary_thread_build(mainwin->summaryview, FALSE);
+               summary_thread_build(mainwin->summaryview);
                mainwin->summaryview->folder_item->threaded = TRUE;
                menu_set_sensitive(ifactory, "/Summary/Thread view",   FALSE);
                menu_set_sensitive(ifactory, "/Summary/Unthread view", TRUE);
@@ -2570,7 +2578,7 @@ static void thread_cb(MainWindow *mainwin, guint action, GtkWidget *widget)
 static void set_display_item_cb(MainWindow *mainwin, guint action,
                                GtkWidget *widget)
 {
-       prefs_summary_display_item_set();
+       prefs_summary_column_open();
 }
 
 static void sort_summary_cb(MainWindow *mainwin, guint action,
@@ -2777,7 +2785,7 @@ static void activate_compose_button (MainWindow *mainwin,
        if (style == TOOLBAR_NONE) 
                return;
 
-       if (style == TOOLBAR_BOTH) {    
+       if (style == TOOLBAR_BOTH) {
                gtk_widget_hide(mainwin->compose_mail_btn_plain);
                gtk_widget_hide(mainwin->compose_news_btn_plain);
                gtk_widget_hide(type == COMPOSEBUTTON_NEWS ? mainwin->compose_mail_btn 
@@ -2797,6 +2805,14 @@ static void activate_compose_button (MainWindow *mainwin,
        }
 }
 
+void main_window_toolbar_set_compose_button(MainWindow *mainwin, ComposeButtonType compose_btn_type)
+{
+       if (mainwin->compose_btn_type != compose_btn_type)
+               activate_compose_button(mainwin, 
+                                       prefs_common.toolbar_style,
+                                       compose_btn_type);
+}
+
 static void prefs_templates_open_cb(MainWindow *mainwin, guint action,
                                    GtkWidget *widget)
 {