gpointer data);
static void compose_toggle_autowrap_cb (GtkToggleAction *action,
gpointer data);
+static void compose_toggle_autoindent_cb(GtkToggleAction *action,
+ gpointer data);
static void compose_toggle_ruler_cb (GtkToggleAction *action,
gpointer data);
static GtkToggleActionEntry compose_toggle_entries[] =
{
{"Edit/AutoWrap", NULL, N_("Aut_o wrapping"), "<shift><control>L", NULL, G_CALLBACK(compose_toggle_autowrap_cb) }, /* TOGGLE */
+ {"Edit/AutoIndent", NULL, N_("Follow _indentation"), NULL, NULL, G_CALLBACK(compose_toggle_autoindent_cb) }, /* TOGGLE */
{"Options/Sign", NULL, N_("Si_gn"), NULL, NULL, G_CALLBACK(compose_toggle_sign_cb) }, /* Toggle */
{"Options/Encrypt", NULL, N_("_Encrypt"), NULL, NULL, G_CALLBACK(compose_toggle_encrypt_cb) }, /* Toggle */
{"Options/RequestRetRcpt", NULL, N_("_Request Return Receipt"), NULL, NULL, G_CALLBACK(compose_toggle_return_receipt_cb) }, /* TOGGLE */
{"Options/Priority/High", NULL, N_("Hi_gh"), NULL, NULL, PRIORITY_HIGH }, /* RADIO compose_set_priority_cb */
{"Options/Priority/Normal", NULL, N_("_Normal"), NULL, NULL, PRIORITY_NORMAL }, /* RADIO compose_set_priority_cb */
{"Options/Priority/Low", NULL, N_("Lo_w"), NULL, NULL, PRIORITY_LOW }, /* RADIO compose_set_priority_cb */
- {"Options/Priority/Lowest", NULL, N_("Lowest"), NULL, NULL, PRIORITY_LOWEST }, /* RADIO compose_set_priority_cb */
+ {"Options/Priority/Lowest", NULL, N_("_Lowest"), NULL, NULL, PRIORITY_LOWEST }, /* RADIO compose_set_priority_cb */
};
static GtkRadioActionEntry compose_radio_enc_entries[] =
compose_force_encryption(compose, account, FALSE);
}
+ privacy_msginfo_get_signed_state(compose->replyinfo);
+ if (MSG_IS_SIGNED(compose->replyinfo->flags) && account->default_sign_reply) {
+ compose_force_signing(compose, account);
+ }
+
SIGNAL_BLOCK(textbuf);
if (account->auto_sig)
gchar *privacy_system = NULL;
int priority = PRIORITY_NORMAL;
MsgInfo *replyinfo = NULL, *fwdinfo = NULL;
+ gboolean autowrap = prefs_common.autowrap;
+ gboolean autoindent = prefs_common.auto_indent;
g_return_val_if_fail(msginfo != NULL, NULL);
g_return_val_if_fail(msginfo->folder != NULL, NULL);
param = atoi(&queueheader_buf[strlen("X-Sylpheed-Encrypt:")]);
use_encryption = param;
}
+ if (!procheader_get_header_from_msginfo(msginfo, queueheader_buf,
+ sizeof(queueheader_buf), "X-Claws-Auto-Wrapping:")) {
+ param = atoi(&queueheader_buf[strlen("X-Claws-Auto-Wrapping:")]);
+ autowrap = param;
+ }
+ if (!procheader_get_header_from_msginfo(msginfo, queueheader_buf,
+ sizeof(queueheader_buf), "X-Claws-Auto-Indent:")) {
+ param = atoi(&queueheader_buf[strlen("X-Claws-Auto-Indent:")]);
+ autoindent = param;
+ }
if (!procheader_get_header_from_msginfo(msginfo, queueheader_buf,
sizeof(queueheader_buf), "X-Claws-Privacy-System:")) {
privacy_system = g_strdup(&queueheader_buf[strlen("X-Claws-Privacy-System:")]);
g_return_val_if_fail(account != NULL, NULL);
compose = compose_create(account, msginfo->folder, COMPOSE_REEDIT, batch);
-
+
+ cm_toggle_menu_set_active_full(compose->ui_manager, "Menu/Edit/AutoWrap", autowrap);
+ cm_toggle_menu_set_active_full(compose->ui_manager, "Menu/Edit/AutoIndent", autoindent);
+ compose->autowrap = autowrap;
compose->replyinfo = replyinfo;
compose->fwdinfo = fwdinfo;
return NULL;
}
-/* return TRUE if the line is itemized */
-static gboolean compose_is_itemized(GtkTextBuffer *buffer,
+/* return >0 if the line is itemized */
+static int compose_itemized_length(GtkTextBuffer *buffer,
const GtkTextIter *start)
{
GtkTextIter iter = *start;
gunichar wc;
gchar ch[6];
gint clen;
-
+ gint len = 0;
if (gtk_text_iter_ends_line(&iter))
- return FALSE;
+ return 0;
while (1) {
+ len++;
wc = gtk_text_iter_get_char(&iter);
if (!g_unichar_isspace(wc))
break;
gtk_text_iter_forward_char(&iter);
if (gtk_text_iter_ends_line(&iter))
- return FALSE;
+ return 0;
}
clen = g_unichar_to_utf8(wc, ch);
if (clen != 1)
- return FALSE;
+ return 0;
if (!strchr("*-+", ch[0]))
- return FALSE;
+ return 0;
gtk_text_iter_forward_char(&iter);
if (gtk_text_iter_ends_line(&iter))
- return FALSE;
+ return 0;
wc = gtk_text_iter_get_char(&iter);
- if (g_unichar_isspace(wc))
- return TRUE;
+ if (g_unichar_isspace(wc)) {
+ return len+1;
+ }
+ return 0;
+}
- return FALSE;
+/* return the string at the start of the itemization */
+static gchar * compose_get_itemized_chars(GtkTextBuffer *buffer,
+ const GtkTextIter *start)
+{
+ GtkTextIter iter = *start;
+ gunichar wc;
+ gint len = 0;
+ GString *item_chars = g_string_new("");
+ gchar *str = NULL;
+
+ if (gtk_text_iter_ends_line(&iter))
+ return NULL;
+
+ while (1) {
+ len++;
+ wc = gtk_text_iter_get_char(&iter);
+ if (!g_unichar_isspace(wc))
+ break;
+ gtk_text_iter_forward_char(&iter);
+ if (gtk_text_iter_ends_line(&iter))
+ break;
+ g_string_append_unichar(item_chars, wc);
+ }
+
+ str = item_chars->str;
+ g_string_free(item_chars, FALSE);
+ return str;
+}
+
+/* return the number of spaces at a line's start */
+static int compose_left_offset_length(GtkTextBuffer *buffer,
+ const GtkTextIter *start)
+{
+ GtkTextIter iter = *start;
+ gunichar wc;
+ gint len = 0;
+ if (gtk_text_iter_ends_line(&iter))
+ return 0;
+
+ while (1) {
+ wc = gtk_text_iter_get_char(&iter);
+ if (!g_unichar_isspace(wc))
+ break;
+ len++;
+ gtk_text_iter_forward_char(&iter);
+ if (gtk_text_iter_ends_line(&iter))
+ return 0;
+ }
+
+ gtk_text_iter_forward_char(&iter);
+ if (gtk_text_iter_ends_line(&iter))
+ return 0;
+ return len;
}
static gboolean compose_get_line_break_pos(GtkTextBuffer *buffer,
}
/* don't join itemized lines */
- if (compose_is_itemized(buffer, &end)) {
+ if (compose_itemized_length(buffer, &end) > 0) {
return FALSE;
}
gboolean modified_before_remove = FALSE;
gint lines = 0;
gboolean start = TRUE;
+ gint itemized_len = 0, rem_item_len = 0;
+ gchar *itemized_chars = NULL;
+ gboolean item_continuation = FALSE;
if (force) {
modified = TRUE;
/* move to line start */
gtk_text_iter_set_line_offset(&iter, 0);
}
+
+ itemized_len = compose_itemized_length(buffer, &iter);
+
+ if (!itemized_len) {
+ itemized_len = compose_left_offset_length(buffer, &iter);
+ item_continuation = TRUE;
+ }
+
+ if (itemized_len)
+ itemized_chars = compose_get_itemized_chars(buffer, &iter);
+
/* go until paragraph end (empty line) */
while (start || !gtk_text_iter_ends_line(&iter)) {
gchar *scanpos = NULL;
prefs_common.linewrap_len,
quote_len)) {
GtkTextIter prev, next, cur;
-
if (prev_autowrap != FALSE || force) {
compose->automatic_break = TRUE;
modified = TRUE;
gtk_text_buffer_insert(buffer, &break_pos, "\n", 1);
compose->automatic_break = FALSE;
+ if (itemized_len && compose->autoindent) {
+ gtk_text_buffer_insert(buffer, &break_pos, itemized_chars, -1);
+ if (!item_continuation)
+ gtk_text_buffer_insert(buffer, &break_pos, " ", 2);
+ }
} else if (quote_str && wrap_quote) {
compose->automatic_break = TRUE;
modified = TRUE;
gtk_text_buffer_insert(buffer, &break_pos, "\n", 1);
compose->automatic_break = FALSE;
+ if (itemized_len && compose->autoindent) {
+ gtk_text_buffer_insert(buffer, &break_pos, itemized_chars, -1);
+ if (!item_continuation)
+ gtk_text_buffer_insert(buffer, &break_pos, " ", 2);
+ }
} else
goto colorize;
/* remove trailing spaces */
cur = break_pos;
+ rem_item_len = itemized_len;
+ while (compose->autoindent && rem_item_len-- > 0)
+ gtk_text_iter_backward_char(&cur);
gtk_text_iter_backward_char(&cur);
+
prev = next = cur;
while (!gtk_text_iter_starts_line(&cur)) {
gunichar wc;
goto end;
}
}
-
debug_print("modified, out after %d lines\n", lines);
end:
+ g_free(itemized_chars);
if (par_iter)
*par_iter = iter;
undo_wrapping(compose->undostruct, FALSE);
for (list = compose->header_list; list; list = list->next) {
gchar *header;
gchar *entry;
- header = gtk_editable_get_chars(GTK_EDITABLE(GTK_BIN(((ComposeHeaderEntry *)list->data)->combo)->child), 0, -1);
+ header = gtk_editable_get_chars(GTK_EDITABLE(gtk_bin_get_child(GTK_BIN((((ComposeHeaderEntry *)list->data)->combo)))), 0, -1);
entry = gtk_editable_get_chars(GTK_EDITABLE(((ComposeHeaderEntry *)list->data)->entry), 0, -1);
g_strstrip(entry);
g_strstrip(header);
gchar *entry;
gchar *header;
entry = gtk_editable_get_chars(GTK_EDITABLE(((ComposeHeaderEntry *)list->data)->entry), 0, -1);
- header = gtk_editable_get_chars(GTK_EDITABLE(GTK_BIN(((ComposeHeaderEntry *)list->data)->combo)->child), 0, -1);
+ header = gtk_editable_get_chars(GTK_EDITABLE(gtk_bin_get_child(GTK_BIN((((ComposeHeaderEntry *)list->data)->combo)))), 0, -1);
g_strstrip(entry);
g_strstrip(header);
if (strcmp(entry, compose->account->auto_cc)
gchar *entry;
gchar *header;
entry = gtk_editable_get_chars(GTK_EDITABLE(((ComposeHeaderEntry *)list->data)->entry), 0, -1);
- header = gtk_editable_get_chars(GTK_EDITABLE(GTK_BIN(((ComposeHeaderEntry *)list->data)->combo)->child), 0, -1);
+ header = gtk_editable_get_chars(GTK_EDITABLE(gtk_bin_get_child(GTK_BIN((((ComposeHeaderEntry *)list->data)->combo)))), 0, -1);
g_strstrip(entry);
g_strstrip(header);
if (strcmp(entry, compose->account->auto_bcc)
first_to_address = TRUE;
for (list = compose->header_list; list; list = list->next) {
headerentry = ((ComposeHeaderEntry *)list->data);
- headerentryname = gtk_entry_get_text(GTK_ENTRY(GTK_BIN(headerentry->combo)->child));
+ headerentryname = gtk_entry_get_text(GTK_ENTRY(gtk_bin_get_child(GTK_BIN((headerentry->combo)))));
if (g_utf8_collate(headerentryname, to_hdr) == 0) {
const gchar *entstr = gtk_entry_get_text(GTK_ENTRY(headerentry->entry));
first_cc_address = TRUE;
for (list = compose->header_list; list; list = list->next) {
headerentry = ((ComposeHeaderEntry *)list->data);
- headerentryname = gtk_entry_get_text(GTK_ENTRY(GTK_BIN(headerentry->combo)->child));
+ headerentryname = gtk_entry_get_text(GTK_ENTRY(gtk_bin_get_child(GTK_BIN((headerentry->combo)))));
if (g_utf8_collate(headerentryname, cc_hdr) == 0) {
const gchar *strg = gtk_entry_get_text(GTK_ENTRY(headerentry->entry));
"X-Claws-End-Special-Headers:", "X-Claws-Account-Id:",
"X-Sylpheed-Privacy", "X-Sylpheed-Sign:", "X-Sylpheed-Encrypt",
"X-Sylpheed-End-Special-Headers:", "X-Sylpheed-Account-Id:",
+ "X-Claws-Auto-Wrapping:", "X-Claws-Auto-Indent:",
NULL
};
if ((fp = g_fopen(compose->redirect_filename, "rb")) == NULL) {
g_free(folderid);
}
+ err |= (fprintf(fp, "X-Claws-Auto-Wrapping:%d\n", compose->autowrap) < 0);
+ err |= (fprintf(fp, "X-Claws-Auto-Indent:%d\n", compose->autoindent) < 0);
+
/* end of headers */
err |= (fprintf(fp, "X-Claws-End-Special-Headers: 1\n") < 0);
for (list = compose->header_list; list; list = list->next) {
headerentry = ((ComposeHeaderEntry *)list->data);
- headerentryname = gtk_entry_get_text(GTK_ENTRY(GTK_BIN(headerentry->combo)->child));
+ headerentryname = gtk_entry_get_text(GTK_ENTRY(gtk_bin_get_child(GTK_BIN((headerentry->combo)))));
if (!g_utf8_collate(trans_fieldname, headerentryname)) {
str = gtk_editable_get_chars(GTK_EDITABLE(headerentry->entry), 0, -1);
headerentry = ((ComposeHeaderEntry *)list->data);
- tmp = g_strdup(gtk_entry_get_text(GTK_ENTRY(GTK_BIN(headerentry->combo)->child)));
+ tmp = g_strdup(gtk_entry_get_text(GTK_ENTRY(gtk_bin_get_child(GTK_BIN((headerentry->combo))))));
g_strstrip(tmp);
if (*tmp == '\0' || strchr(tmp, ' ') != NULL || strchr(tmp, '\r') != NULL || strchr(tmp, '\n') != NULL) {
g_free(tmp);
string++;
}
gtk_combo_box_set_active(GTK_COMBO_BOX(combo), 0);
- g_signal_connect(G_OBJECT(GTK_BIN(combo)->child), "grab_focus",
+ g_signal_connect(G_OBJECT(gtk_bin_get_child(GTK_BIN((combo)))), "grab_focus",
G_CALLBACK(compose_grab_focus_cb), compose);
gtk_widget_show(combo);
gtk_table_attach(GTK_TABLE(compose->header_table), combo, 0, 1,
GTK_SHRINK, GTK_FILL, 0, 0);
if (compose->header_last) {
const gchar *last_header_entry = gtk_entry_get_text(
- GTK_ENTRY(GTK_BIN(compose->header_last->combo)->child));
+ GTK_ENTRY(gtk_bin_get_child(GTK_BIN((compose->header_last->combo)))));
string = headers;
while (*string != NULL) {
if (!strcmp(*string, last_header_entry))
string++;
}
if (standard_header)
- header = gtk_entry_get_text(GTK_ENTRY(GTK_BIN(compose->header_last->combo)->child));
+ header = gtk_entry_get_text(GTK_ENTRY(gtk_bin_get_child(GTK_BIN((compose->header_last->combo)))));
}
if (!compose->header_last || !standard_header) {
switch(compose->account->protocol) {
}
}
if (header)
- gtk_entry_set_text(GTK_ENTRY(GTK_BIN(combo)->child), header);
+ gtk_entry_set_text(GTK_ENTRY(gtk_bin_get_child(GTK_BIN((combo)))), header);
- g_signal_connect_after(G_OBJECT(GTK_BIN(combo)->child), "grab_focus",
+ g_signal_connect_after(G_OBJECT(gtk_bin_get_child(GTK_BIN((combo)))), "grab_focus",
G_CALLBACK(compose_grab_focus_cb), compose);
/* Entry field */
last_header = compose->header_last;
- gtk_entry_set_text(GTK_ENTRY(GTK_BIN(last_header->combo)->child), header);
+ gtk_entry_set_text(GTK_ENTRY(gtk_bin_get_child(GTK_BIN((last_header->combo)))), header);
gtk_entry_set_text(GTK_ENTRY(last_header->entry), text);
}
gtk_widget_show(header_table);
gtk_container_set_border_width(GTK_CONTAINER(header_table), BORDER_WIDTH);
gtk_scrolled_window_add_with_viewport(GTK_SCROLLED_WINDOW(header_scrolledwin), header_table);
- gtk_viewport_set_shadow_type(GTK_VIEWPORT(GTK_BIN(header_scrolledwin)->child), GTK_SHADOW_NONE);
+ gtk_viewport_set_shadow_type(GTK_VIEWPORT(gtk_bin_get_child(GTK_BIN((header_scrolledwin)))), GTK_SHADOW_NONE);
count = 0;
/* option menu for selecting accounts */
MENUITEM_ADDUI_MANAGER(compose->ui_manager, "/Menu/Edit", "WrapPara", "Edit/WrapPara", GTK_UI_MANAGER_MENUITEM)
MENUITEM_ADDUI_MANAGER(compose->ui_manager, "/Menu/Edit", "WrapAllLines", "Edit/WrapAllLines", GTK_UI_MANAGER_MENUITEM)
MENUITEM_ADDUI_MANAGER(compose->ui_manager, "/Menu/Edit", "AutoWrap", "Edit/AutoWrap", GTK_UI_MANAGER_MENUITEM)
+ MENUITEM_ADDUI_MANAGER(compose->ui_manager, "/Menu/Edit", "AutoIndent", "Edit/AutoIndent", GTK_UI_MANAGER_MENUITEM)
MENUITEM_ADDUI_MANAGER(compose->ui_manager, "/Menu/Edit", "Separator3", "Edit/---", GTK_UI_MANAGER_SEPARATOR)
compose->boundary = NULL;
compose->autowrap = prefs_common.autowrap;
-
+ compose->autoindent = prefs_common.auto_indent;
compose->use_signing = FALSE;
compose->use_encryption = FALSE;
compose->privacy_system = NULL;
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);
if (account->set_autocc && account->auto_cc && mode != COMPOSE_REEDIT)
compose_entry_append(compose, account->auto_cc, COMPOSE_CC);
cm_menu_set_sensitive_full(compose->ui_manager, "Menu/Options/ReplyMode", compose->mode == COMPOSE_REPLY);
if (account->protocol != A_NNTP)
- gtk_entry_set_text(GTK_ENTRY(GTK_BIN(compose->header_last->combo)->child),
+ gtk_entry_set_text(GTK_ENTRY(gtk_bin_get_child(GTK_BIN((compose->header_last->combo)))),
prefs_common_translated_header_name("To:"));
else
- gtk_entry_set_text(GTK_ENTRY(GTK_BIN(compose->header_last->combo)->child),
+ gtk_entry_set_text(GTK_ENTRY(gtk_bin_get_child(GTK_BIN((compose->header_last->combo)))),
prefs_common_translated_header_name("Newsgroups:"));
addressbook_set_target_compose(compose);
gint value = gtk_radio_action_get_current_value (GTK_RADIO_ACTION (current));
Compose *compose = (Compose *) data;
if (active) {
- printf("activated %d\n", value);
compose->priority = value;
}
}
}
#endif
- prefs_common.compose_width = compose->scrolledwin->allocation.width;
- prefs_common.compose_height = compose->window->allocation.height;
+ if (!compose->batch) {
+ prefs_common.compose_width = compose->scrolledwin->allocation.width;
+ prefs_common.compose_height = compose->window->allocation.height;
+ }
if (!gtk_widget_get_parent(compose->paned))
gtk_widget_destroy(compose->paned);
}
g_list_free(strlist);
gtk_combo_box_set_active(GTK_COMBO_BOX(mimetype_entry), 0);
- mimetype_entry = GTK_BIN(mimetype_entry)->child;
+ mimetype_entry = gtk_bin_get_child(GTK_BIN((mimetype_entry)));
label = gtk_label_new(_("Encoding"));
gtk_table_attach(GTK_TABLE(table), label, 0, 1, 1, 2,
g_free(folderid);
}
+ err |= (fprintf(fp, "X-Claws-Auto-Wrapping:%d\n", compose->autowrap) < 0);
+ err |= (fprintf(fp, "X-Claws-Auto-Indent:%d\n", compose->autoindent) < 0);
+
/* end of headers */
err |= (fprintf(fp, "X-Claws-End-Special-Headers: 1\n") < 0);
Compose *compose = (Compose *)data;
gtkut_widget_get_uposition(widget, &x, &y);
- prefs_common.compose_x = x;
- prefs_common.compose_y = y;
-
+ if (!compose->batch) {
+ prefs_common.compose_x = x;
+ prefs_common.compose_y = y;
+ }
if (compose->sending || compose->updating)
return TRUE;
compose_close_cb(NULL, compose);
#endif
if (compose->modified) {
+ gboolean reedit = (compose->rmode == COMPOSE_REEDIT);
if (!g_mutex_trylock(compose->mutex)) {
/* we don't want to lock the mutex once it's available,
* because as the only other part of compose.c locking
debug_print("couldn't lock mutex, probably sending\n");
return;
}
- val = alertpanel(_("Discard message"),
+ if (!reedit) {
+ val = alertpanel(_("Discard message"),
_("This message has been modified. Discard it?"),
_("_Discard"), _("_Save to Drafts"), GTK_STOCK_CANCEL);
+ } else {
+ val = alertpanel(_("Save changes"),
+ _("This message has been modified. Save the latest changes?"),
+ _("_Don't save"), _("+_Save to Drafts"), GTK_STOCK_CANCEL);
+ }
g_mutex_unlock(compose->mutex);
switch (val) {
case G_ALERTDEFAULT:
- if (prefs_common.autosave)
+ if (prefs_common.autosave && !reedit)
compose_remove_draft(compose);
break;
case G_ALERTALTERNATE:
compose->autowrap = gtk_toggle_action_get_active (GTK_TOGGLE_ACTION (action));
}
+static void compose_toggle_autoindent_cb(GtkToggleAction *action,
+ gpointer data)
+{
+ Compose *compose = (Compose *)data;
+ compose->autoindent = gtk_toggle_action_get_active (GTK_TOGGLE_ACTION (action));
+}
+
static void compose_toggle_sign_cb(GtkToggleAction *action, gpointer data)
{
Compose *compose = (Compose *)data;
gtk_text_buffer_delete_mark(buffer, mark);
} else {
if (strcmp(text, "\n") || compose->automatic_break
- || gtk_text_iter_starts_line(iter))
+ || gtk_text_iter_starts_line(iter)) {
+ GtkTextIter before_ins;
gtk_text_buffer_insert(buffer, iter, text, len);
- else {
+ if (!strstr(text, "\n") && gtk_text_iter_has_tag(iter, compose->no_join_tag)) {
+ before_ins = *iter;
+ gtk_text_iter_backward_chars(&before_ins, len);
+ gtk_text_buffer_remove_tag_by_name(buffer, "no_join", &before_ins, iter);
+ }
+ } else {
/* check if the preceding is just whitespace or quote */
GtkTextIter start_line;
gchar *tmp = NULL, *quote = NULL;
gtk_text_iter_set_line_offset(&start_line, 0);
tmp = gtk_text_buffer_get_text(buffer, &start_line, iter, FALSE);
g_strstrip(tmp);
+
if (*tmp == '\0') {
is_normal = 1;
} else {
}
g_return_val_if_fail(compose, FALSE);
gtkut_widget_get_uposition(compose->window, &x, &y);
- prefs_common.compose_x = x;
- prefs_common.compose_y = y;
+ if (!compose->batch) {
+ prefs_common.compose_x = x;
+ prefs_common.compose_y = y;
+ }
g_mutex_unlock(compose->mutex);
compose_destroy(compose);
return FALSE;
GSList *new_msglist = NULL;
MsgInfo *tmp_msginfo = NULL;
gboolean originally_enc = FALSE;
+ gboolean originally_sig = FALSE;
Compose *compose = NULL;
g_return_if_fail(msgview != NULL);
new_msglist = g_slist_append(NULL, tmp_msginfo);
originally_enc = MSG_IS_ENCRYPTED(orig_msginfo->flags);
+ privacy_msginfo_get_signed_state(orig_msginfo);
+ originally_sig = MSG_IS_SIGNED(orig_msginfo->flags);
+
tmp_msginfo->folder = orig_msginfo->folder;
tmp_msginfo->msgnum = orig_msginfo->msgnum;
if (orig_msginfo->tags)
compose_force_encryption(compose, compose->account, FALSE);
}
+ if (compose && originally_sig && compose->account->default_sign_reply) {
+ compose_force_signing(compose, compose->account);
+ }
+
g_free(body);
}
for (list = compose->header_list; list; list = list->next) {
gchar *header = gtk_editable_get_chars(
GTK_EDITABLE(
- GTK_BIN(((ComposeHeaderEntry *)list->data)->combo)->child), 0, -1);
+ gtk_bin_get_child(GTK_BIN((((ComposeHeaderEntry *)list->data)->combo)))), 0, -1);
gchar *entry = gtk_editable_get_chars(
GTK_EDITABLE(((ComposeHeaderEntry *)list->data)->entry), 0, -1);