only show warning about privacy system 'none' on replies to signed or encrypted msgs
[claws.git] / src / compose.c
index 090981e80b48bce6352a8f215e0a87e570bbaa02..487ec1c984c98b3b9e90611240eedfd1d7d08108 100644 (file)
@@ -1208,7 +1208,8 @@ 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), prefs_common.savemsg);
+               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);
                g_free(folderidentifier);
@@ -1590,6 +1591,7 @@ static Compose *compose_generic_reply(MsgInfo *msginfo,
                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);
                g_free(folderidentifier);
@@ -1690,7 +1692,8 @@ static Compose *compose_generic_reply(MsgInfo *msginfo,
        g_free(s_system);
 
        if (privacy_system_can_sign(compose->privacy_system) == FALSE &&
-           (account->default_encrypt_reply || account->default_sign_reply))
+           ((account->default_encrypt_reply && MSG_IS_ENCRYPTED(compose->replyinfo->flags)) ||
+            (account->default_sign_reply && MSG_IS_SIGNED(compose->replyinfo->flags))))
                alertpanel_error(_("You have opted to sign and/or encrypt this "
                                   "message but have not selected a privacy system.\n\n"
                                   "Signing and encrypting have been disabled for this "
@@ -1913,6 +1916,7 @@ Compose *compose_forward(PrefsAccount *account, MsgInfo *msginfo,
                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);
                g_free(folderidentifier);
@@ -2403,6 +2407,7 @@ 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);
                }
@@ -2543,7 +2548,8 @@ 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), prefs_common.savemsg);
+               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);
                g_free(folderidentifier);
@@ -7489,7 +7495,6 @@ static GtkWidget *compose_create_attach(Compose *compose)
        return attach_scrwin;
 }
 
-static void compose_savemsg_checkbtn_cb(GtkWidget *widget, Compose *compose);
 static void compose_savemsg_select_cb(GtkWidget *widget, Compose *compose);
 
 static GtkWidget *compose_create_others(Compose *compose)
@@ -7516,8 +7521,6 @@ static GtkWidget *compose_create_others(Compose *compose)
        if (account_get_special_folder(compose->account, F_OUTBOX)) {
                gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(savemsg_checkbtn), prefs_common.savemsg);
        }
-       g_signal_connect(G_OBJECT(savemsg_checkbtn), "toggled",
-                        G_CALLBACK(compose_savemsg_checkbtn_cb), compose);
 
        savemsg_combo = gtk_combo_box_text_new_with_entry();
        compose->savemsg_checkbtn = savemsg_checkbtn;
@@ -7532,6 +7535,11 @@ static GtkWidget *compose_create_others(Compose *compose)
        g_signal_connect_after(G_OBJECT(savemsg_combo), "grab_focus",
                         G_CALLBACK(compose_grab_focus_cb), compose);
        if (account_get_special_folder(compose->account, F_OUTBOX)) {
+               if (compose->account->set_sent_folder)
+                       gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(savemsg_checkbtn), TRUE);
+               else
+                       gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(savemsg_checkbtn), FALSE);
+               gtk_widget_set_sensitive(GTK_WIDGET(savemsg_combo), TRUE);
                folderidentifier = folder_item_get_identifier(account_get_special_folder
                                  (compose->account, F_OUTBOX));
                compose_set_save_to(compose, folderidentifier);
@@ -7548,12 +7556,6 @@ static GtkWidget *compose_create_others(Compose *compose)
        return table;   
 }
 
-static void compose_savemsg_checkbtn_cb(GtkWidget *widget, Compose *compose) 
-{
-       gtk_widget_set_sensitive(GTK_WIDGET(compose->savemsg_combo),
-               gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(compose->savemsg_checkbtn)));
-}
-
 static void compose_savemsg_select_cb(GtkWidget *widget, Compose *compose)
 {
        FolderItem *dest;
@@ -8289,6 +8291,8 @@ static Compose *compose_create(PrefsAccount *account,
        claws_spell_entry_set_gtkaspell(CLAWS_SPELL_ENTRY(subject_entry), gtkaspell);
 #endif
 
+       compose_select_account(compose, account, TRUE);
+
        cm_toggle_menu_set_active_full(compose->ui_manager, "Menu/Edit/AutoWrap", prefs_common.autowrap);
        cm_toggle_menu_set_active_full(compose->ui_manager, "Menu/Edit/AutoIndent", prefs_common.auto_indent);
 
@@ -10133,14 +10137,19 @@ static void account_activated(GtkComboBox *optmenu, gpointer data)
        }
 
        /* Set message save folder */
-       if (account_get_special_folder(compose->account, F_OUTBOX)) {
-               gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(compose->savemsg_checkbtn), prefs_common.savemsg);
-       }
-       g_signal_connect(G_OBJECT(compose->savemsg_checkbtn), "toggled",
-                        G_CALLBACK(compose_savemsg_checkbtn_cb), compose);
-                          
        compose_set_save_to(compose, NULL);
-       if (account_get_special_folder(compose->account, F_OUTBOX)) {
+       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);
+               gtk_widget_set_sensitive(GTK_WIDGET(compose->savemsg_combo), TRUE);
                folderidentifier = folder_item_get_identifier(account_get_special_folder
                                  (compose->account, F_OUTBOX));
                compose_set_save_to(compose, folderidentifier);