#include <gtk/gtkclist.h>
#include <gtk/gtkctree.h>
#include <gtk/gtkvpaned.h>
-#include <gtk/gtktext.h>
#include <gtk/gtkentry.h>
#include <gtk/gtkeditable.h>
#include <gtk/gtkwindow.h>
# include <wctype.h>
#endif
+
+#include "gtkstext.h"
+
#include "intl.h"
#include "main.h"
#include "mainwindow.h"
#include "menu.h"
#include "send.h"
#include "news.h"
+#include "customheader.h"
#include "prefs_common.h"
#include "prefs_account.h"
#include "account.h"
static void compose_set_ext_editor_sensitive (Compose *compose,
gboolean sensitive);
-static gint calc_cursor_xpos (GtkText *text,
+static gint calc_cursor_xpos (GtkSText *text,
gint extra,
gint char_width);
guint action,
GtkWidget *widget);
#endif
+static void compose_toggle_return_receipt_cb(gpointer data, guint action,
+ GtkWidget *widget);
static void compose_attach_drag_received_cb (GtkWidget *widget,
GdkDragContext *drag_context,
{N_("/_Message/Si_gn"), NULL, compose_toggle_sign_cb, 0, "<ToggleItem>"},
{N_("/_Message/_Encrypt"), NULL, compose_toggle_encrypt_cb, 0, "<ToggleItem>"},
#endif /* USE_GPGME */
+ {N_("/_Message/---"), NULL, NULL, 0, "<Separator>"},
+ {N_("/_Message/_Request Return Receipt"), NULL, compose_toggle_return_receipt_cb, 0, "<ToggleItem>"},
{N_("/_Tool"), NULL, NULL, 0, "<Branch>"},
{N_("/_Tool/Show _ruler"), NULL, compose_toggle_ruler_cb, 0, "<ToggleItem>"},
{N_("/_Tool/_Address book"), "<alt>A", compose_address_cb, 0, NULL},
if (prefs_common.auto_sig)
compose_insert_sig(compose);
gtk_editable_set_position(GTK_EDITABLE(compose->text), 0);
- gtk_text_set_point(GTK_TEXT(compose->text), 0);
+ gtk_stext_set_point(GTK_STEXT(compose->text), 0);
if (account->protocol != A_NNTP) {
if (to) {
{
Compose *compose;
PrefsAccount *account;
- GtkText *text;
+ GtkSText *text;
g_return_if_fail(msginfo != NULL);
g_return_if_fail(msginfo->folder != NULL);
if (compose_parse_header(compose, msginfo) < 0) return;
compose_reply_set_entry(compose, msginfo, to_all);
- text = GTK_TEXT(compose->text);
- gtk_text_freeze(text);
+ text = GTK_STEXT(compose->text);
+ gtk_stext_freeze(text);
if (quote) {
FILE *fp;
else {
quote_str = compose_quote_parse_fmt
(compose, msginfo, prefs_common.quotefmt);
- gtk_text_insert(text, NULL, NULL, NULL, quote_str, -1);
+ gtk_stext_insert(text, NULL, NULL, NULL, quote_str, -1);
g_free(quote_str);
compose_quote_file(compose, msginfo, fp);
fclose(fp);
if (prefs_common.auto_sig)
compose_insert_sig(compose);
gtk_editable_set_position(GTK_EDITABLE(text), 0);
- gtk_text_set_point(text, 0);
+ gtk_stext_set_point(text, 0);
- gtk_text_thaw(text);
+ gtk_stext_thaw(text);
gtk_widget_grab_focus(compose->text);
}
#define INSERT_FW_HEADER(var, hdr) \
if (msginfo->var && *msginfo->var) { \
- gtk_text_insert(text, NULL, NULL, NULL, hdr, -1); \
- gtk_text_insert(text, NULL, NULL, NULL, msginfo->var, -1); \
- gtk_text_insert(text, NULL, NULL, NULL, "\n", 1); \
+ gtk_stext_insert(text, NULL, NULL, NULL, hdr, -1); \
+ gtk_stext_insert(text, NULL, NULL, NULL, msginfo->var, -1); \
+ gtk_stext_insert(text, NULL, NULL, NULL, "\n", 1); \
}
void compose_forward(MsgInfo *msginfo, gboolean as_attach)
{
Compose *compose;
PrefsAccount *account;
- GtkText *text;
+ GtkSText *text;
FILE *fp;
gchar buf[BUFFSIZE];
msginfo->subject);
}
- text = GTK_TEXT(compose->text);
- gtk_text_freeze(text);
+ text = GTK_STEXT(compose->text);
+ gtk_stext_freeze(text);
if (as_attach) {
gchar *msgfile;
g_warning(_("Can't get text part\n"));
else {
/* insert header */
- gtk_text_insert(text, NULL, NULL, NULL,
+ gtk_stext_insert(text, NULL, NULL, NULL,
_("\n\nBegin forwarded message:\n\n"), -1);
INSERT_FW_HEADER(date, "Date: ");
INSERT_FW_HEADER(from, "From: ");
INSERT_FW_HEADER(to, "To: ");
INSERT_FW_HEADER(newsgroups, "Newsgroups: ");
INSERT_FW_HEADER(subject, "Subject: ");
- gtk_text_insert(text, NULL, NULL, NULL, "\n\n", 2);
+ gtk_stext_insert(text, NULL, NULL, NULL, "\n\n", 2);
/* forward body */
while (fgets(buf, sizeof(buf), fp) != NULL)
- gtk_text_insert(text, NULL, NULL, NULL,
+ gtk_stext_insert(text, NULL, NULL, NULL,
buf, -1);
fclose(fp);
}
if (prefs_common.auto_sig)
compose_insert_sig(compose);
gtk_editable_set_position(GTK_EDITABLE(compose->text), 0);
- gtk_text_set_point(GTK_TEXT(compose->text), 0);
+ gtk_stext_set_point(GTK_STEXT(compose->text), 0);
- gtk_text_thaw(text);
+ gtk_stext_thaw(text);
if (account->protocol != A_NNTP)
gtk_widget_grab_focus(compose->to_entry);
else
gtk_widget_grab_focus(compose->newsgroups_entry);
}
+#undef INSERT_FW_HEADER
+
void compose_reedit(MsgInfo *msginfo)
{
Compose *compose;
PrefsAccount *account;
- GtkText *text;
+ GtkSText *text;
FILE *fp;
gchar buf[BUFFSIZE];
if (compose_parse_header(compose, msginfo) < 0) return;
compose_reedit_set_entry(compose, msginfo);
- text = GTK_TEXT(compose->text);
- gtk_text_freeze(text);
+ text = GTK_STEXT(compose->text);
+ gtk_stext_freeze(text);
if ((fp = procmime_get_text_part(msginfo)) == NULL)
g_warning(_("Can't get text part\n"));
else {
while (fgets(buf, sizeof(buf), fp) != NULL)
- gtk_text_insert(text, NULL, NULL, NULL, buf, -1);
+ gtk_stext_insert(text, NULL, NULL, NULL, buf, -1);
fclose(fp);
}
- gtk_text_thaw(text);
+ gtk_stext_thaw(text);
gtk_widget_grab_focus(compose->text);
}
static void compose_quote_file(Compose *compose, MsgInfo *msginfo, FILE *fp)
{
- GtkText *text = GTK_TEXT(compose->text);
+ GtkSText *text = GTK_STEXT(compose->text);
gchar *qmark;
gchar *quote_str;
GdkColor *qcolor = NULL;
if (!prefs_common.linewrap_quote ||
prefs_common.linewrap_len <= qlen) {
while (fgets(buf, sizeof(buf), fp) != NULL) {
- gtk_text_insert(text, NULL, qcolor, NULL,
+ gtk_stext_insert(text, NULL, qcolor, NULL,
quote_str, -1);
- gtk_text_insert(text, NULL, qcolor, NULL, buf, -1);
+ gtk_stext_insert(text, NULL, qcolor, NULL, buf, -1);
}
g_free(quote_str);
return;
str_len = strlen(buf);
if (str_len <= wrap_len) {
- gtk_text_insert(text, NULL, qcolor, NULL,
+ gtk_stext_insert(text, NULL, qcolor, NULL,
quote_str, -1);
- gtk_text_insert(text, NULL, qcolor, NULL, buf, -1);
- gtk_text_insert(text, NULL, NULL, NULL, "\n", 1);
+ gtk_stext_insert(text, NULL, qcolor, NULL, buf, -1);
+ gtk_stext_insert(text, NULL, NULL, NULL, "\n", 1);
continue;
}
}
if (cur_len + ch_len > wrap_len && line_len > 0) {
- gtk_text_insert(text, NULL, qcolor, NULL,
+ gtk_stext_insert(text, NULL, qcolor, NULL,
quote_str, -1);
if (isspace(*(linep - 1)))
- gtk_text_insert(text, NULL,
+ gtk_stext_insert(text, NULL,
qcolor, NULL,
leftp, line_len - 1);
else
- gtk_text_insert(text, NULL,
+ gtk_stext_insert(text, NULL,
qcolor, NULL,
leftp, line_len);
- gtk_text_insert(text, NULL, NULL, NULL,
+ gtk_stext_insert(text, NULL, NULL, NULL,
"\n", 1);
leftp = linep;
}
if (*leftp) {
- gtk_text_insert(text, NULL, qcolor, NULL,
+ gtk_stext_insert(text, NULL, qcolor, NULL,
quote_str, -1);
- gtk_text_insert(text, NULL, qcolor, NULL, leftp, -1);
- gtk_text_insert(text, NULL, NULL, NULL, "\n", 1);
+ gtk_stext_insert(text, NULL, qcolor, NULL, leftp, -1);
+ gtk_stext_insert(text, NULL, NULL, NULL, "\n", 1);
}
}
}
}
+#undef SET_ENTRY
+
static void compose_insert_sig(Compose *compose)
{
gchar *sigfile;
if (compose->account && compose->account->sig_path)
sigfile = g_strdup(compose->account->sig_path);
else {
- sigfile = g_strconcat(g_get_home_dir(), G_DIR_SEPARATOR_S,
+ sigfile = g_strconcat(get_home_dir(), G_DIR_SEPARATOR_S,
DEFAULT_SIGNATURE, NULL);
}
return;
}
- gtk_text_insert(GTK_TEXT(compose->text), NULL, NULL, NULL, "\n\n", 2);
+ gtk_stext_insert(GTK_STEXT(compose->text), NULL, NULL, NULL, "\n\n", 2);
if (prefs_common.sig_sep) {
- gtk_text_insert(GTK_TEXT(compose->text), NULL, NULL, NULL,
+ gtk_stext_insert(GTK_STEXT(compose->text), NULL, NULL, NULL,
prefs_common.sig_sep, -1);
- gtk_text_insert(GTK_TEXT(compose->text), NULL, NULL, NULL,
+ gtk_stext_insert(GTK_STEXT(compose->text), NULL, NULL, NULL,
"\n", 1);
}
static void compose_insert_file(Compose *compose, const gchar *file)
{
- GtkText *text = GTK_TEXT(compose->text);
+ GtkSText *text = GTK_STEXT(compose->text);
gchar buf[BUFFSIZE];
FILE *fp;
return;
}
- gtk_text_freeze(text);
+ gtk_stext_freeze(text);
while (fgets(buf, sizeof(buf), fp) != NULL)
- gtk_text_insert(text, NULL, NULL, NULL, buf, -1);
+ gtk_stext_insert(text, NULL, NULL, NULL, buf, -1);
- gtk_text_thaw(text);
+ gtk_stext_thaw(text);
fclose(fp);
}
static void compose_wrap_line(Compose *compose)
{
- GtkText *text = GTK_TEXT(compose->text);
+ GtkSText *text = GTK_STEXT(compose->text);
guint text_len;
guint line_pos = 0, cur_pos = 0;
gint line_len = 0, cur_len = 0;
gint ch_len;
gchar cbuf[MB_CUR_MAX];
- gtk_text_freeze(text);
+ gtk_stext_freeze(text);
- text_len = gtk_text_get_length(text);
+ text_len = gtk_stext_get_length(text);
for (; cur_pos < text_len; cur_pos++) {
if (text->use_wchar)
ch_len = wctomb
- (cbuf, (wchar_t)GTK_TEXT_INDEX(text, cur_pos));
+ (cbuf, (wchar_t)GTK_STEXT_INDEX(text, cur_pos));
else {
- cbuf[0] = GTK_TEXT_INDEX(text, cur_pos);
+ cbuf[0] = GTK_STEXT_INDEX(text, cur_pos);
ch_len = 1;
}
gint tlen;
if (text->use_wchar)
- tlen = wctomb(cbuf, (wchar_t)GTK_TEXT_INDEX(text, line_pos - 1));
+ tlen = wctomb(cbuf, (wchar_t)GTK_STEXT_INDEX(text, line_pos - 1));
else {
- cbuf[0] = GTK_TEXT_INDEX(text, line_pos - 1);
+ cbuf[0] = GTK_STEXT_INDEX(text, line_pos - 1);
tlen = 1;
}
if (tlen == 1 && isspace(*cbuf)) {
- gtk_text_set_point(text, line_pos);
- gtk_text_backward_delete(text, 1);
+ gtk_stext_set_point(text, line_pos);
+ gtk_stext_backward_delete(text, 1);
text_len--;
cur_pos--;
line_pos--;
line_len--;
}
- gtk_text_set_point(text, line_pos);
- gtk_text_insert(text, NULL, NULL, NULL, "\n", 1);
+ gtk_stext_set_point(text, line_pos);
+ gtk_stext_insert(text, NULL, NULL, NULL, "\n", 1);
text_len++;
cur_pos++;
line_pos++;
cur_len += ch_len;
}
- gtk_text_thaw(text);
+ gtk_stext_thaw(text);
}
static void compose_set_title(Compose *compose)
fprintf(fp, "\n--%s--\n", compose->boundary);
}
+#define IS_IN_CUSTOM_HEADER(header) \
+ (compose->account->add_customhdr && \
+ custom_header_find(compose->account->customhdr_list, header) != NULL)
+
static gint compose_write_headers(Compose *compose, FILE *fp,
const gchar *charset, EncodingType encoding,
gboolean is_draft)
get_rfc822_date(buf, sizeof(buf));
fprintf(fp, "Date: %s\n", buf);
}
-
+
/* From */
- if (compose->account->name && *compose->account->name) {
- compose_convert_header
- (buf, sizeof(buf), compose->account->name,
- strlen("From: "));
- fprintf(fp, "From: %s <%s>\n", buf, compose->account->address);
- } else
- fprintf(fp, "From: %s\n", compose->account->address);
-
+ if (!IS_IN_CUSTOM_HEADER("From")) {
+ if (compose->account->name && *compose->account->name) {
+ compose_convert_header
+ (buf, sizeof(buf), compose->account->name,
+ strlen("From: "));
+ fprintf(fp, "From: %s <%s>\n",
+ buf, compose->account->address);
+ } else
+ fprintf(fp, "From: %s\n", compose->account->address);
+ }
+
slist_free_strings(compose->to_list);
g_slist_free(compose->to_list);
compose->to_list = NULL;
if (*str != '\0') {
compose->to_list = address_list_append
(compose->to_list, str);
- compose_convert_header(buf, sizeof(buf), str,
- strlen("To: "));
- fprintf(fp, "To: %s\n", buf);
+ if (!IS_IN_CUSTOM_HEADER("To")) {
+ compose_convert_header
+ (buf, sizeof(buf), str,
+ strlen("To: "));
+ fprintf(fp, "To: %s\n", buf);
+ }
}
}
}
-
+
slist_free_strings(compose->newsgroup_list);
g_slist_free(compose->newsgroup_list);
compose->newsgroup_list = NULL;
compose->newsgroup_list =
newsgroup_list_append(compose->newsgroup_list,
str);
- compose_convert_header(buf, sizeof(buf), str,
- strlen("Newsgroups: "));
- fprintf(fp, "Newsgroups: %s\n", buf);
+ if (!IS_IN_CUSTOM_HEADER("Newsgroups")) {
+ compose_convert_header(buf, sizeof(buf), str,
+ strlen("Newsgroups: "));
+ fprintf(fp, "Newsgroups: %s\n", buf);
+ }
}
}
if (*str != '\0') {
compose->to_list = address_list_append
(compose->to_list, str);
- compose_convert_header(buf, sizeof(buf), str,
- strlen("Cc: "));
- fprintf(fp, "Cc: %s\n", buf);
+ if (!IS_IN_CUSTOM_HEADER("Cc")) {
+ compose_convert_header
+ (buf, sizeof(buf), str,
+ strlen("Cc: "));
+ fprintf(fp, "Cc: %s\n", buf);
+ }
}
}
}
-
+
/* Bcc */
if (compose->use_bcc) {
str = gtk_entry_get_text(GTK_ENTRY(compose->bcc_entry));
/* Subject */
str = gtk_entry_get_text(GTK_ENTRY(compose->subject_entry));
- if (*str != '\0') {
+ if (*str != '\0' && !IS_IN_CUSTOM_HEADER("Subject")) {
Xstrdup_a(str, str, return -1);
g_strstrip(str);
if (*str != '\0') {
fprintf(fp, "References: %s\n", compose->references);
/* Followup-To */
- if (compose->use_followupto) {
+ if (compose->use_followupto && !IS_IN_CUSTOM_HEADER("Followup-To")) {
str = gtk_entry_get_text(GTK_ENTRY(compose->followup_entry));
if (*str != '\0') {
Xstrdup_a(str, str, return -1);
}
/* Reply-To */
- if (compose->use_replyto) {
+ if (compose->use_replyto && !IS_IN_CUSTOM_HEADER("Reply-To")) {
str = gtk_entry_get_text(GTK_ENTRY(compose->reply_entry));
if (*str != '\0') {
Xstrdup_a(str, str, return -1);
}
}
+ /* Organization */
+ if (compose->account->organization &&
+ !IS_IN_CUSTOM_HEADER("Organization")) {
+ compose_convert_header(buf, sizeof(buf),
+ compose->account->organization,
+ strlen("Organization: "));
+ fprintf(fp, "Organization: %s\n", buf);
+ }
+
/* Program version and system info */
/* uname(&utsbuf); */
str = gtk_entry_get_text(GTK_ENTRY(compose->to_entry));
- if (*str != '\0') {
+ if (*str != '\0' && !IS_IN_CUSTOM_HEADER("X-Mailer")) {
fprintf(fp, "X-Mailer: %s (GTK+ %d.%d.%d; %s)\n",
prog_version,
gtk_major_version, gtk_minor_version, gtk_micro_version,
/* utsbuf.sysname, utsbuf.release, utsbuf.machine); */
}
str = gtk_entry_get_text(GTK_ENTRY(compose->newsgroups_entry));
- if (*str != '\0') {
+ if (*str != '\0' && !IS_IN_CUSTOM_HEADER("X-Newsreader")) {
fprintf(fp, "X-Newsreader: %s (GTK+ %d.%d.%d; %s)\n",
prog_version,
gtk_major_version, gtk_minor_version, gtk_micro_version,
/* utsbuf.sysname, utsbuf.release, utsbuf.machine); */
}
- /* Organization */
- if (compose->account->organization) {
- compose_convert_header(buf, sizeof(buf),
- compose->account->organization,
- strlen("Organization: "));
- fprintf(fp, "Organization: %s\n", buf);
+ /* custom headers */
+ if (compose->account->add_customhdr) {
+ GSList *cur;
+
+ for (cur = compose->account->customhdr_list; cur != NULL;
+ cur = cur->next) {
+ CustomHeader *chdr = (CustomHeader *)cur->data;
+
+ if (strcasecmp(chdr->name, "Date") != 0 &&
+ strcasecmp(chdr->name, "Message-Id") != 0 &&
+ strcasecmp(chdr->name, "In-Reply-To") != 0 &&
+ strcasecmp(chdr->name, "References") != 0 &&
+ strcasecmp(chdr->name, "Mime-Version") != 0 &&
+ strcasecmp(chdr->name, "Content-Type") != 0 &&
+ strcasecmp(chdr->name, "Content-Transfer-Encoding")
+ != 0)
+ compose_convert_header
+ (buf, sizeof(buf),
+ chdr->value ? chdr->value : "",
+ strlen(chdr->name) + 2);
+ fprintf(fp, "%s: %s\n", chdr->name, buf);
+ }
}
-
+
/* MIME */
fprintf(fp, "Mime-Version: 1.0\n");
if (compose->use_attach) {
procmime_get_encoding_str(encoding));
}
+ /* Request Return Receipt */
+ if (!IS_IN_CUSTOM_HEADER("Disposition-Notification-To")) {
+ if (compose->return_receipt) {
+ if (compose->account->name
+ && *compose->account->name) {
+ compose_convert_header(buf, sizeof(buf), compose->account->name, strlen("Disposition-Notification-To: "));
+ fprintf(fp, "Disposition-Notification-To: %s <%s>\n", buf, compose->account->address);
+ } else
+ fprintf(fp, "Disposition-Notification-To: %s\n", compose->account->address);
+ }
+ }
+
/* separator between header and body */
fputs("\n", fp);
return 0;
}
+#undef IS_IN_CUSTOM_HEADER
+
static void compose_convert_header(gchar *dest, gint len, gchar *src,
gint header_len)
{
gtk_box_pack_start(GTK_BOX(edit_vbox), scrolledwin, TRUE, TRUE, 0);
gtk_widget_set_usize(scrolledwin, prefs_common.compose_width, -1);
- text = gtk_text_new(gtk_scrolled_window_get_hadjustment
+ text = gtk_stext_new(gtk_scrolled_window_get_hadjustment
(GTK_SCROLLED_WINDOW(scrolledwin)),
gtk_scrolled_window_get_vadjustment
(GTK_SCROLLED_WINDOW(scrolledwin)));
- gtk_text_set_editable(GTK_TEXT(text), TRUE);
- gtk_text_set_word_wrap(GTK_TEXT(text), TRUE);
+ gtk_stext_set_editable(GTK_STEXT(text), TRUE);
+ gtk_stext_set_word_wrap(GTK_STEXT(text), TRUE);
+ gtk_stext_set_wrap_rmargin(GTK_STEXT(text), prefs_common.linewrap_len);
+
gtk_container_add(GTK_CONTAINER(scrolledwin), text);
gtk_signal_connect(GTK_OBJECT(text), "changed",
style = gtk_widget_get_style(text);
- /* workaround for the slow down of GtkText when using Pixmap theme */
+ /* workaround for the slow down of GtkSText when using Pixmap theme */
if (style->engine) {
GtkThemeEngine *engine;
compose->modified = FALSE;
+ compose->return_receipt = FALSE;
+
compose->to_list = NULL;
compose->newsgroup_list = NULL;
gtk_check_menu_item_set_active
(GTK_CHECK_MENU_ITEM(menuitem), TRUE);
}
- if (account->set_autobcc && account->auto_bcc) {
- gtk_entry_set_text(GTK_ENTRY(bcc_entry), account->auto_bcc);
+ if (account->set_autobcc) {
menuitem = gtk_item_factory_get_item(ifactory, "/Message/Bcc");
gtk_check_menu_item_set_active
(GTK_CHECK_MENU_ITEM(menuitem), TRUE);
+ if (account->auto_bcc)
+ gtk_entry_set_text(GTK_ENTRY(bcc_entry),
+ account->auto_bcc);
}
- if (account->set_autoreplyto && account->auto_replyto) {
- gtk_entry_set_text(GTK_ENTRY(reply_entry),
- account->auto_replyto);
+ if (account->set_autoreplyto) {
menuitem = gtk_item_factory_get_item(ifactory,
"/Message/Reply to");
gtk_check_menu_item_set_active
(GTK_CHECK_MENU_ITEM(menuitem), TRUE);
+ if (account->auto_replyto)
+ gtk_entry_set_text(GTK_ENTRY(reply_entry),
+ account->auto_replyto);
}
menuitem = gtk_item_factory_get_item(ifactory, "/Tool/Show ruler");
gtk_widget_show_all(toolbar);
}
+#undef CREATE_TOOLBAR_ICON
+
static GtkWidget *compose_account_option_menu_create(Compose *compose)
{
GList *accounts;
attach_prop.cancel_btn = cancel_btn;
}
+#undef SET_LABEL_AND_ENTRY
+
static void attach_property_ok(GtkWidget *widget, gboolean *cancelled)
{
*cancelled = FALSE;
close(pipe_fds[0]);
if (compose_write_body_to_file(compose, tmp) < 0) {
- sock_write(pipe_fds[1], "2\n", 2);
+ fd_write(pipe_fds[1], "2\n", 2);
_exit(1);
}
pid_ed = compose_exec_ext_editor_real(tmp);
if (pid_ed < 0) {
- sock_write(pipe_fds[1], "1\n", 2);
+ fd_write(pipe_fds[1], "1\n", 2);
_exit(1);
}
/* wait until editor is terminated */
waitpid(pid_ed, NULL, 0);
- sock_write(pipe_fds[1], "0\n", 2);
+ fd_write(pipe_fds[1], "0\n", 2);
close(pipe_fds[1]);
_exit(0);
waitpid(compose->exteditor_pid, NULL, 0);
if (buf[0] == '0') { /* success */
- GtkText *text = GTK_TEXT(compose->text);
+ GtkSText *text = GTK_STEXT(compose->text);
- gtk_text_freeze(text);
- gtk_text_set_point(text, 0);
- gtk_text_forward_delete(text, gtk_text_get_length(text));
+ gtk_stext_freeze(text);
+ gtk_stext_set_point(text, 0);
+ gtk_stext_forward_delete(text, gtk_stext_get_length(text));
compose_insert_file(compose, compose->exteditor_file);
compose_changed_cb(NULL, compose);
- gtk_text_thaw(text);
+ gtk_stext_thaw(text);
if (unlink(compose->exteditor_file) < 0)
FILE_OP_ERROR(compose->exteditor_file, "unlink");
gtk_widget_set_sensitive(compose->linewrap_btn, sensitive);
}
-static gint calc_cursor_xpos(GtkText *text, gint extra, gint char_width)
+static gint calc_cursor_xpos(GtkSText *text, gint extra, gint char_width)
{
gint cursor_pos;
/* got the maximum */
gtk_ruler_set_range(GTK_RULER(shruler),
0.0, line_width_in_chars,
- calc_cursor_xpos(GTK_TEXT(widget),
+ calc_cursor_xpos(GTK_STEXT(widget),
allocation->x,
char_width),
/*line_width_in_chars*/ char_width);
static void compose_button_press_cb(GtkWidget *widget, GdkEventButton *event,
Compose *compose)
{
- gtk_text_set_point(GTK_TEXT(widget),
+ gtk_stext_set_point(GTK_STEXT(widget),
gtk_editable_get_position(GTK_EDITABLE(widget)));
}
static void compose_key_press_cb(GtkWidget *widget, GdkEventKey *event,
Compose *compose)
{
- gtk_text_set_point(GTK_TEXT(widget),
+ gtk_stext_set_point(GTK_STEXT(widget),
gtk_editable_get_position(GTK_EDITABLE(widget)));
}
#endif
{
gtk_widget_grab_focus(compose->text);
}
+
+static void compose_toggle_return_receipt_cb(gpointer data, guint action,
+ GtkWidget *widget)
+{
+ Compose *compose = (Compose *)data;
+
+ if (GTK_CHECK_MENU_ITEM(widget)->active)
+ compose->return_receipt = TRUE;
+ else
+ compose->return_receipt = FALSE;
+}