Handle compose "Save Message to" checkbox state in compose_set_save_to() only.
authorAndrej Kacian <ticho@claws-mail.org>
Sun, 28 Oct 2018 20:58:31 +0000 (21:58 +0100)
committerAndrej Kacian <ticho@claws-mail.org>
Sun, 28 Oct 2018 20:59:08 +0000 (21:59 +0100)
Fixes bug #4107 - Sent messages do not appear in "Sent" folder...

src/compose.c

index 487ec1c984c98b3b9e90611240eedfd1d7d08108..786ace4c4a6785e204ccbd47c2f4b78e133cb732 100644 (file)
@@ -940,10 +940,13 @@ static void compose_set_save_to(Compose *compose, const gchar *folderidentifier)
        }
 
        entry = GTK_EDITABLE(gtk_bin_get_child(GTK_BIN(compose->savemsg_combo)));
-       if (folderidentifier)
+       if (folderidentifier) {
+               gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(compose->savemsg_checkbtn), TRUE);
                gtk_entry_set_text(GTK_ENTRY(entry), folderidentifier);
-       else
+       } else {
+               gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(compose->savemsg_checkbtn), FALSE);
                gtk_entry_set_text(GTK_ENTRY(entry), "");
+       }
 }
 
 static gchar *compose_get_save_to(Compose *compose)
@@ -1208,7 +1211,6 @@ Compose *compose_generic_new(PrefsAccount *account, const gchar *mailto, FolderI
        if (item && item->prefs && item->prefs->save_copy_to_folder) {
                gchar *folderidentifier;
 
-               gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(compose->savemsg_checkbtn), TRUE);
                gtk_widget_set_sensitive(GTK_WIDGET(compose->savemsg_combo), TRUE);
                folderidentifier = folder_item_get_identifier(item);
                compose_set_save_to(compose, folderidentifier);
@@ -1590,7 +1592,6 @@ static Compose *compose_generic_reply(MsgInfo *msginfo,
        if (msginfo->folder && msginfo->folder->prefs && msginfo->folder->prefs->save_copy_to_folder) {
                gchar *folderidentifier;
 
-               gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(compose->savemsg_checkbtn), TRUE);
                gtk_widget_set_sensitive(GTK_WIDGET(compose->savemsg_combo), TRUE);
                folderidentifier = folder_item_get_identifier(msginfo->folder);
                compose_set_save_to(compose, folderidentifier);
@@ -1915,7 +1916,6 @@ Compose *compose_forward(PrefsAccount *account, MsgInfo *msginfo,
        if (msginfo->folder && msginfo->folder->prefs && msginfo->folder->prefs->save_copy_to_folder) {
                gchar *folderidentifier;
 
-               gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(compose->savemsg_checkbtn), TRUE);
                gtk_widget_set_sensitive(GTK_WIDGET(compose->savemsg_combo), TRUE);
                folderidentifier = folder_item_get_identifier(msginfo->folder);
                compose_set_save_to(compose, folderidentifier);
@@ -2406,7 +2406,6 @@ Compose *compose_reedit(MsgInfo *msginfo, gboolean batch)
 
                /* Set message save folder */
                if (!procheader_get_header_from_msginfo(msginfo, &queueheader_buf, "SCF:")) {
-                       gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(compose->savemsg_checkbtn), TRUE);
                        gtk_widget_set_sensitive(GTK_WIDGET(compose->savemsg_combo), TRUE);
                        compose_set_save_to(compose, &queueheader_buf[4]);
                        g_free(queueheader_buf);
@@ -2548,7 +2547,6 @@ Compose *compose_redirect(PrefsAccount *account, MsgInfo *msginfo,
        if (item && item->prefs && item->prefs->save_copy_to_folder) {
                gchar *folderidentifier;
 
-               gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(compose->savemsg_checkbtn), TRUE);
                gtk_widget_set_sensitive(GTK_WIDGET(compose->savemsg_combo), TRUE);
                folderidentifier = folder_item_get_identifier(item);
                compose_set_save_to(compose, folderidentifier);
@@ -10073,6 +10071,7 @@ static void account_activated(GtkComboBox *optmenu, gpointer data)
        GtkTreeIter iter;
        GSList *list, *saved_list = NULL;
        HeaderEntryState *state;
+       FolderItem *item;
 
        /* Get ID of active account in the combo box */
        menu = gtk_combo_box_get_model(optmenu);
@@ -10139,19 +10138,13 @@ static void account_activated(GtkComboBox *optmenu, gpointer data)
        /* Set message save folder */
        compose_set_save_to(compose, NULL);
        if (compose->folder && compose->folder->prefs && compose->folder->prefs->save_copy_to_folder) {
-               gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(compose->savemsg_checkbtn), TRUE);
                gtk_widget_set_sensitive(GTK_WIDGET(compose->savemsg_combo), TRUE);
                folderidentifier = folder_item_get_identifier(compose->folder);
                compose_set_save_to(compose, folderidentifier);
                g_free(folderidentifier);
-       } else if (account_get_special_folder(compose->account, F_OUTBOX)) {
-               if (compose->account->set_sent_folder)
-                       gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(compose->savemsg_checkbtn), TRUE);
-               else
-                       gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(compose->savemsg_checkbtn), FALSE);
+       } else if ((item = account_get_special_folder(compose->account, F_OUTBOX)) != NULL) {
                gtk_widget_set_sensitive(GTK_WIDGET(compose->savemsg_combo), TRUE);
-               folderidentifier = folder_item_get_identifier(account_get_special_folder
-                                 (compose->account, F_OUTBOX));
+               folderidentifier = folder_item_get_identifier(item);
                compose_set_save_to(compose, folderidentifier);
                g_free(folderidentifier);
        }