2007-10-17 [wwp] 3.0.2cvs79
[claws.git] / src / compose.c
index e96b28fe95bbc2ea09b829bdd9057d89007cd962..7866bbdf38a8ad488bf6888fa8e3ed7723d74261 100644 (file)
@@ -548,6 +548,8 @@ static void compose_set_dictionaries_from_folder_prefs(Compose *compose,
 #endif
 static void compose_attach_update_label(Compose *compose);
 
+static void compose_attach_from_list(Compose *compose, GList *file_list, gboolean free_data);
+
 static GtkItemFactoryEntry compose_popup_entries[] =
 {
        {N_("/_Add..."),        NULL, compose_attach_cb, 0, NULL},
@@ -723,7 +725,7 @@ static GtkItemFactoryEntry compose_entries[] =
                        NULL, compose_set_encoding_cb, C_AUTO, "<RadioItem>"},
        {N_("/_Options/Character _encoding/---"), NULL, NULL, 0, "<Separator>"},
 
-       {N_("/_Options/Character _encoding/7bit ascii (US-ASC_II)"),
+       {N_("/_Options/Character _encoding/7bit ASCII (US-ASC_II)"),
         ENC_ACTION(C_US_ASCII)},
        {N_("/_Options/Character _encoding/Unicode (_UTF-8)"),
         ENC_ACTION(C_UTF_8)},
@@ -1096,6 +1098,7 @@ Compose *compose_generic_new(PrefsAccount *account, const gchar *mailto, FolderI
                                alertpanel_error(_("New message subject format error."));
                        else
                                gtk_entry_set_text(GTK_ENTRY(compose->subject_entry), buf);
+                       compose_attach_from_list(compose, quote_fmt_get_attachments_list(), FALSE);
                        quote_fmt_reset_vartable();
 
                        g_free(subject);
@@ -1123,6 +1126,7 @@ Compose *compose_generic_new(PrefsAccount *account, const gchar *mailto, FolderI
                                          body_format,
                                          NULL, tmp, FALSE, TRUE,
                                                  _("New message body format error at line %d."));
+                       compose_attach_from_list(compose, quote_fmt_get_attachments_list(), FALSE);
                        quote_fmt_reset_vartable();
 
                        g_free(tmp);
@@ -1504,6 +1508,7 @@ static Compose *compose_generic_reply(MsgInfo *msginfo,
                compose_quote_fmt(compose, compose->replyinfo,
                                  body_fmt, qmark, body, FALSE, TRUE,
                                          _("Message reply format error at line %d."));
+               compose_attach_from_list(compose, quote_fmt_get_attachments_list(), FALSE);
                quote_fmt_reset_vartable();
        }
 
@@ -1639,6 +1644,7 @@ Compose *compose_forward(PrefsAccount *account, MsgInfo *msginfo,
                compose_quote_fmt(compose, full_msginfo,
                                  body_fmt, qmark, body, FALSE, TRUE,
                                          _("Message forward format error at line %d."));
+               compose_attach_from_list(compose, quote_fmt_get_attachments_list(), FALSE);
                quote_fmt_reset_vartable();
                compose_attach_parts(compose, msginfo);
 
@@ -7419,6 +7425,7 @@ static void compose_template_apply(Compose *compose, Template *tmpl,
        /* process the other fields */
 
        compose_template_apply_fields(compose, tmpl);
+       compose_attach_from_list(compose, quote_fmt_get_attachments_list(), FALSE);
        quote_fmt_reset_vartable();
        compose_changed_cb(NULL, compose);
 }
@@ -8741,17 +8748,9 @@ static void compose_draft_cb(gpointer data, guint action, GtkWidget *widget)
        compose_draft(data, action);
 }
 
-static void compose_attach_cb(gpointer data, guint action, GtkWidget *widget)
+static void compose_attach_from_list(Compose *compose, GList *file_list, gboolean free_data)
 {
-       Compose *compose = (Compose *)data;
-       GList *file_list;
-
-       if (compose->redirect_filename != NULL)
-               return;
-
-       file_list = filesel_select_multiple_files_open(_("Select file"));
-
-       if (file_list) {
+       if (compose && file_list) {
                GList *tmp;
 
                for ( tmp = file_list; tmp; tmp = tmp->next) {
@@ -8759,9 +8758,27 @@ static void compose_attach_cb(gpointer data, guint action, GtkWidget *widget)
                        gchar *utf8_filename = conv_filename_to_utf8(file);
                        compose_attach_append(compose, file, utf8_filename, NULL);
                        compose_changed_cb(NULL, compose);
+                       if (free_data) {
                        g_free(file);
+                               tmp->data = NULL;
+                       }
                        g_free(utf8_filename);
                }
+       }
+}
+
+static void compose_attach_cb(gpointer data, guint action, GtkWidget *widget)
+{
+       Compose *compose = (Compose *)data;
+       GList *file_list;
+
+       if (compose->redirect_filename != NULL)
+               return;
+
+       file_list = filesel_select_multiple_files_open(_("Select file"));
+
+       if (file_list) {
+               compose_attach_from_list(compose, file_list, TRUE);
                g_list_free(file_list);
        }
 }