GList *listAddress );
static Compose *compose_create (PrefsAccount *account,
+ FolderItem *item,
ComposeMode mode,
gboolean batch);
GtkTextBuffer *textbuf;
GtkTextIter iter;
GtkItemFactory *ifactory;
- gchar *subject_format = NULL;
- gchar *body_format = NULL;
+ const gchar *subject_format = NULL;
+ const gchar *body_format = NULL;
if (item && item->prefs && item->prefs->enable_default_account)
account = account_find_from_id(item->prefs->default_account);
if (!account) account = cur_account;
g_return_val_if_fail(account != NULL, NULL);
- compose = compose_create(account, COMPOSE_NEW, FALSE);
+ compose = compose_create(account, item, COMPOSE_NEW, FALSE);
ifactory = gtk_item_factory_from_widget(compose->menubar);
GtkTextView *textview;
GtkTextBuffer *textbuf;
gboolean quote = FALSE;
- gchar *qmark = NULL;
- gchar *body_fmt = NULL;
+ const gchar *qmark = NULL;
+ const gchar *body_fmt = NULL;
g_return_val_if_fail(msginfo != NULL, NULL);
g_return_val_if_fail(msginfo->folder != NULL, NULL);
g_return_val_if_fail(account != NULL, NULL);
- compose = compose_create(account, COMPOSE_REPLY, FALSE);
+ compose = compose_create(account, msginfo->folder, COMPOSE_REPLY, FALSE);
compose->updating = TRUE;
(msginfo)))
account = cur_account;
- compose = compose_create(account, COMPOSE_FORWARD, batch);
+ compose = compose_create(account, msginfo->folder, COMPOSE_FORWARD, batch);
compose->updating = TRUE;
compose->fwdinfo = procmsg_msginfo_get_full_info(msginfo);
g_free(msgfile);
} else {
- gchar *qmark = NULL;
- gchar *body_fmt = prefs_common.fw_quotefmt;
+ const gchar *qmark = NULL;
+ const gchar *body_fmt = prefs_common.fw_quotefmt;
MsgInfo *full_msginfo;
full_msginfo = procmsg_msginfo_get_full_info(msginfo);
MSG_SET_PERM_FLAGS(((MsgInfo *)msginfo->data)->flags, MSG_FORWARDED);
}
- compose = compose_create(account, COMPOSE_FORWARD, FALSE);
+ compose = compose_create(account, ((MsgInfo *)msginfo_list->data)->folder, COMPOSE_FORWARD, FALSE);
compose->updating = TRUE;
}
g_return_val_if_fail(account != NULL, NULL);
- compose = compose_create(account, COMPOSE_REEDIT, batch);
+ compose = compose_create(account, msginfo->folder, COMPOSE_REEDIT, batch);
compose->replyinfo = replyinfo;
compose->fwdinfo = fwdinfo;
prefs_common.reply_account_autosel);
g_return_val_if_fail(account != NULL, NULL);
- compose = compose_create(account, COMPOSE_REDIRECT, batch);
+ compose = compose_create(account, msginfo->folder, COMPOSE_REDIRECT, batch);
compose->updating = TRUE;
}
static gboolean compose_force_window_origin = TRUE;
-static Compose *compose_create(PrefsAccount *account, ComposeMode mode,
+static Compose *compose_create(PrefsAccount *account,
+ FolderItem *folder,
+ ComposeMode mode,
gboolean batch)
{
Compose *compose;
compose->batch = batch;
compose->account = account;
+ compose->folder = folder;
compose->mutex = g_mutex_new();
compose->set_cursor_pos = -1;
}
}
+static const gchar *compose_quote_char_from_context(Compose *compose)
+{
+ const gchar *qmark = NULL;
+
+ g_return_val_if_fail(compose != NULL, NULL);
+
+ switch (compose->mode) {
+ /* use forward-specific quote char */
+ case COMPOSE_FORWARD:
+ case COMPOSE_FORWARD_AS_ATTACH:
+ case COMPOSE_FORWARD_INLINE:
+ if (compose->folder && compose->folder->prefs &&
+ compose->folder->prefs->forward_with_format)
+ qmark = compose->folder->prefs->forward_quotemark;
+ else if (compose->account->forward_with_format)
+ qmark = compose->account->forward_quotemark;
+ else
+ qmark = prefs_common.fw_quotemark;
+ break;
+
+ /* use reply-specific quote char in all other modes */
+ default:
+ if (compose->folder && compose->folder->prefs &&
+ compose->folder->prefs->reply_with_format)
+ qmark = compose->folder->prefs->reply_quotemark;
+ else if (compose->account->reply_with_format)
+ qmark = compose->account->reply_quotemark;
+ else
+ qmark = prefs_common.quotemark;
+ break;
+ }
+
+ if (qmark == NULL || *qmark == '\0')
+ qmark = "> ";
+
+ return qmark;
+}
+
static void compose_template_apply(Compose *compose, Template *tmpl,
gboolean replace)
{
GtkTextBuffer *buffer;
GtkTextMark *mark;
GtkTextIter iter;
- gchar *qmark;
+ const gchar *qmark;
gchar *parsed_str = NULL;
gint cursor_pos = 0;
const gchar *err_msg = _("Template body format error at line %d.");
buffer = gtk_text_view_get_buffer(text);
if (tmpl->value) {
- /* FIXME - use per-folder/account quotemark */
- if (prefs_common.quotemark && *prefs_common.quotemark)
- qmark = prefs_common.quotemark;
- else
- qmark = "> ";
+ qmark = compose_quote_char_from_context(compose);
if (compose->replyinfo != NULL) {
compose);
if (paste_as_quotation) {
gchar *new_text;
- gchar *qmark;
+ const gchar *qmark;
if (len < 0)
len = strlen(text);
new_text = g_strndup(text, len);
- /* FIXME - use per-folder/account quotemark */
- if (prefs_common.quotemark && *prefs_common.quotemark)
- qmark = prefs_common.quotemark;
- else
- qmark = "> ";
+ qmark = compose_quote_char_from_context(compose);
mark = gtk_text_buffer_create_mark(buffer, NULL, iter, FALSE);
gtk_text_buffer_place_cursor(buffer, iter);