(Compose *compose);
static void compose_set_template_menu (Compose *compose);
static void compose_template_apply (Compose *compose,
- Template *tmpl);
+ Template *tmpl,
+ gboolean replace);
static void compose_destroy (Compose *compose);
static void compose_entries_set (Compose *compose,
if (folder)
outbox = folder->outbox;
+ if (!outbox)
+ outbox = folder_get_default_outbox();
if (procmsg_save_to_outbox(outbox, tmp, FALSE) < 0)
alertpanel_error
(_("Can't save the message to outbox."));
+ else
+ folderview_update_item(outbox, TRUE);
}
}
GSList *cur;
gchar buf[BUFFSIZE];
gint num;
+ MsgFlags flag = {0, 0};
static gboolean lock = FALSE;
PrefsAccount *mailac = NULL, *newsac = NULL;
(compose->targetinfo->folder, TRUE);
}
- if ((fp = procmsg_open_mark_file(queue_path, TRUE)) == NULL)
- g_warning(_("can't open mark file\n"));
- else {
- MsgInfo newmsginfo;
-
- newmsginfo.msgnum = num;
- newmsginfo.flags.perm_flags = 0;
- newmsginfo.flags.tmp_flags = 0;
- procmsg_write_flags(&newmsginfo, fp);
- fclose(fp);
- }
- g_free(queue_path);
-
+ procmsg_add_flags(queue, num, flag);
folder_item_scan(queue);
folderview_update_item(queue, TRUE);
GtkPspell * gtkpspell = NULL;
#endif
+ static GdkGeometry geometry;
+
g_return_val_if_fail(account != NULL, NULL);
debug_print(_("Creating compose window...\n"));
gtk_window_set_policy(GTK_WINDOW(window), TRUE, TRUE, FALSE);
gtk_widget_set_usize(window, -1, prefs_common.compose_height);
gtk_window_set_wmclass(GTK_WINDOW(window), "compose window", "Sylpheed");
+
+ if (!geometry.max_width) {
+ geometry.max_width = gdk_screen_width();
+ geometry.max_height = gdk_screen_height();
+ }
+ gtk_window_set_geometry_hints(GTK_WINDOW(window), NULL,
+ &geometry, GDK_HINT_MAX_SIZE);
+
gtk_signal_connect(GTK_OBJECT(window), "delete_event",
GTK_SIGNAL_FUNC(compose_delete_cb), compose);
gtk_signal_connect(GTK_OBJECT(window), "destroy",
}
}
-
-static void compose_template_apply(Compose *compose, Template *tmpl)
+static void compose_template_apply(Compose *compose, Template *tmpl,
+ gboolean replace)
{
gchar *qmark;
gchar *parsed_str;
if (tmpl->to && *tmpl->to != '\0')
compose_entry_append(compose, tmpl->to, COMPOSE_TO);
- gtk_stext_clear(GTK_STEXT(compose->text));
+ if (replace)
+ gtk_stext_clear(GTK_STEXT(compose->text));
if (compose->replyinfo == NULL) {
MsgInfo dummyinfo;
tmpl->value, qmark, NULL);
}
- if (parsed_str && prefs_common.auto_sig)
+ if (replace && parsed_str && prefs_common.auto_sig)
compose_insert_sig(compose);
+ if (replace && parsed_str) {
+ gtk_editable_set_position(GTK_EDITABLE(compose->text), 0);
+ gtk_stext_set_point(GTK_STEXT(compose->text), 0);
+ }
+
+ if (parsed_str)
+ compose_changed_cb(NULL, compose);
+
gtk_stext_thaw(GTK_STEXT(compose->text));
}
FolderItem *draft;
gchar *tmp;
gint msgnum;
- gchar *draft_path;
- FILE *fp;
+ MsgFlags flag = {0, 0};
static gboolean lock = FALSE;
if (lock) return;
TRUE);
}
- draft_path = folder_item_get_path(draft);
- if ((fp = procmsg_open_mark_file(draft_path, TRUE)) == NULL)
- g_warning(_("can't open mark file\n"));
- else {
- MsgInfo newmsginfo;
-
- newmsginfo.msgnum = msgnum;
- newmsginfo.flags.perm_flags = 0;
- newmsginfo.flags.tmp_flags = 0;
- procmsg_write_flags(&newmsginfo, fp);
- fclose(fp);
- }
- g_free(draft_path);
-
+ procmsg_add_flags(draft, msgnum, flag);
folder_item_scan(draft);
folderview_update_item(draft, TRUE);
{
Compose *compose = (Compose *)data;
Template *tmpl;
+ gchar *msg;
+ AlertValue val;
tmpl = gtk_object_get_data(GTK_OBJECT(widget), "template");
g_return_if_fail(tmpl != NULL);
- compose_template_apply(compose, tmpl);
+ msg = g_strdup_printf(_("Do you want to apply the template `%s' ?"),
+ tmpl->name);
+ val = alertpanel(_("Apply template"), msg,
+ _("Replace"), _("Insert"), _("Cancel"));
+ g_free(msg);
+
+ if (val == G_ALERTDEFAULT)
+ compose_template_apply(compose, tmpl, TRUE);
+ else if (val == G_ALERTALTERNATE)
+ compose_template_apply(compose, tmpl, FALSE);
}
static void compose_ext_editor_cb(gpointer data, guint action,
GtkAccelEntry *accel;
GtkWidget *send_menu;
GSList *list;
+ GdkModifierType ignored_mods =
+ (GDK_LOCK_MASK | GDK_MOD2_MASK | GDK_MOD3_MASK |
+ GDK_MOD4_MASK | GDK_MOD5_MASK);
ev = gtk_get_current_event();
if (ev->type != GDK_KEY_PRESS) return FALSE;
list = gtk_accel_group_entries_from_object(GTK_OBJECT(send_menu));
accel = (GtkAccelEntry *)list->data;
if (accel->accelerator_key == kev->keyval &&
- accel->accelerator_mods == kev->state) {
+ (accel->accelerator_mods & ~ignored_mods) ==
+ (kev->state & ~ignored_mods)) {
compose_send_cb(compose, 0, NULL);
return TRUE;
}