commit eb34005e5cb2761e9bb080045b584e77ffe3d137
parent 9d8995debb4209c0d7fc1d5b3c22ef943b8f07f1
Author: Colin Leroy <colin@colino.net>
Date: Tue, 9 Dec 2008 16:55:21 +0000
2008-12-09 [colin] 3.6.1cvs66
* src/compose.c
* src/compose.h
* src/folder_item_prefs.h
* src/prefs_common.c
* src/prefs_common.h
* src/common/defs.h
Fix bug 1792, '"Save Message to" should
retain list of recently selected folders'
Also, make Enchant-related prefs stick
even if the build doesn't enable enchant
Diffstat:
9 files changed, 91 insertions(+), 38 deletions(-)
diff --git a/ChangeLog b/ChangeLog
@@ -1,3 +1,16 @@
+2008-12-09 [colin] 3.6.1cvs66
+
+ * src/compose.c
+ * src/compose.h
+ * src/folder_item_prefs.h
+ * src/prefs_common.c
+ * src/prefs_common.h
+ * src/common/defs.h
+ Fix bug 1792, '"Save Message to" should
+ retain list of recently selected folders'
+ Also, make Enchant-related prefs stick
+ even if the build doesn't enable enchant
+
2008-12-09 [paul] 3.6.1cvs65
* src/messageview.c
diff --git a/PATCHSETS b/PATCHSETS
@@ -3647,3 +3647,4 @@
( cvs diff -u -r 1.60.2.66 -r 1.60.2.67 src/prefs_actions.c; cvs diff -u -r 1.5.2.55 -r 1.5.2.56 src/gtk/pluginwindow.c; ) > 3.6.1cvs63.patchset
( cvs diff -u -r 1.59.2.74 -r 1.59.2.75 src/prefs_filtering.c; ) > 3.6.1cvs64.patchset
( cvs diff -u -r 1.94.2.192 -r 1.94.2.193 src/messageview.c; ) > 3.6.1cvs65.patchset
+( cvs diff -u -r 1.382.2.488 -r 1.382.2.489 src/compose.c; cvs diff -u -r 1.50.2.51 -r 1.50.2.52 src/compose.h; cvs diff -u -r 1.2.2.19 -r 1.2.2.20 src/folder_item_prefs.h; cvs diff -u -r 1.204.2.183 -r 1.204.2.184 src/prefs_common.c; cvs diff -u -r 1.103.2.119 -r 1.103.2.120 src/prefs_common.h; cvs diff -u -r 1.9.2.46 -r 1.9.2.47 src/common/defs.h; ) > 3.6.1cvs66.patchset
diff --git a/configure.ac b/configure.ac
@@ -11,7 +11,7 @@ MINOR_VERSION=6
MICRO_VERSION=1
INTERFACE_AGE=0
BINARY_AGE=0
-EXTRA_VERSION=65
+EXTRA_VERSION=66
EXTRA_RELEASE=
EXTRA_GTK2_VERSION=
diff --git a/src/common/defs.h b/src/common/defs.h
@@ -72,6 +72,7 @@
#define SUMMARY_SEARCH_BODY_HISTORY "summary_searchbody_history"
#define SUMMARY_SEARCH_ADV_CONDITION_HISTORY "summarysearch_adv_history"
#define MESSAGE_SEARCH_HISTORY "messagesearch_history"
+#define COMPOSE_SAVE_TO_HISTORY "compose_save_to_history"
#define ADDRESSBOOK_CUSTOM_ATTRIBUTES "attributesrc"
#define TEMPLATE_DIR "templates"
#define TMP_DIR "tmp"
diff --git a/src/compose.c b/src/compose.c
@@ -886,6 +886,41 @@ Compose *compose_new_with_list( PrefsAccount *account, GList *listAddress )
cmark); \
}
+static void compose_set_save_to(Compose *compose, const gchar *folderidentifier)
+{
+ GtkEditable *entry;
+ if (folderidentifier) {
+ combobox_unset_popdown_strings(GTK_COMBO_BOX(compose->savemsg_combo));
+ prefs_common.compose_save_to_history = add_history(
+ prefs_common.compose_save_to_history, folderidentifier);
+ combobox_set_popdown_strings(GTK_COMBO_BOX(compose->savemsg_combo),
+ prefs_common.compose_save_to_history);
+ }
+
+ entry = GTK_EDITABLE(gtk_bin_get_child(GTK_BIN(compose->savemsg_combo)));
+ if (folderidentifier)
+ gtk_entry_set_text(GTK_ENTRY(entry), folderidentifier);
+ else
+ gtk_entry_set_text(GTK_ENTRY(entry), "");
+}
+
+static gchar *compose_get_save_to(Compose *compose)
+{
+ GtkEditable *entry;
+ gchar *result = NULL;
+ entry = GTK_EDITABLE(gtk_bin_get_child(GTK_BIN(compose->savemsg_combo)));
+ result = gtk_editable_get_chars(entry, 0, -1);
+
+ if (result) {
+ combobox_unset_popdown_strings(GTK_COMBO_BOX(compose->savemsg_combo));
+ prefs_common.compose_save_to_history = add_history(
+ prefs_common.compose_save_to_history, result);
+ combobox_set_popdown_strings(GTK_COMBO_BOX(compose->savemsg_combo),
+ prefs_common.compose_save_to_history);
+ }
+ return result;
+}
+
Compose *compose_generic_new(PrefsAccount *account, const gchar *mailto, FolderItem *item,
GPtrArray *attach_files, GList *listAddress )
{
@@ -1102,7 +1137,7 @@ Compose *compose_generic_new(PrefsAccount *account, const gchar *mailto, FolderI
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(compose->savemsg_checkbtn), prefs_common.savemsg);
folderidentifier = folder_item_get_identifier(item);
- gtk_entry_set_text(GTK_ENTRY(compose->savemsg_entry), folderidentifier);
+ compose_set_save_to(compose, folderidentifier);
g_free(folderidentifier);
}
@@ -1413,7 +1448,7 @@ static Compose *compose_generic_reply(MsgInfo *msginfo,
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(compose->savemsg_checkbtn), TRUE);
folderidentifier = folder_item_get_identifier(msginfo->folder);
- gtk_entry_set_text(GTK_ENTRY(compose->savemsg_entry), folderidentifier);
+ compose_set_save_to(compose, folderidentifier);
g_free(folderidentifier);
}
@@ -1713,7 +1748,7 @@ Compose *compose_forward(PrefsAccount *account, MsgInfo *msginfo,
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(compose->savemsg_checkbtn), TRUE);
folderidentifier = folder_item_get_identifier(msginfo->folder);
- gtk_entry_set_text(GTK_ENTRY(compose->savemsg_entry), folderidentifier);
+ compose_set_save_to(compose, folderidentifier);
g_free(folderidentifier);
}
@@ -2118,11 +2153,8 @@ Compose *compose_reedit(MsgInfo *msginfo, gboolean batch)
/* Set message save folder */
if (!procheader_get_header_from_msginfo(msginfo, queueheader_buf, sizeof(queueheader_buf), "SCF:")) {
- gint startpos = 0;
-
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(compose->savemsg_checkbtn), TRUE);
- gtk_editable_delete_text(GTK_EDITABLE(compose->savemsg_entry), 0, -1);
- gtk_editable_insert_text(GTK_EDITABLE(compose->savemsg_entry), &queueheader_buf[4], strlen(&queueheader_buf[4]), &startpos);
+ compose_set_save_to(compose, &queueheader_buf[4]);
}
if (!procheader_get_header_from_msginfo(msginfo, queueheader_buf, sizeof(queueheader_buf), "RRCPT:")) {
gint active = atoi(&queueheader_buf[strlen("RRCPT:")]);
@@ -2248,7 +2280,7 @@ Compose *compose_redirect(PrefsAccount *account, MsgInfo *msginfo,
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(compose->savemsg_checkbtn), prefs_common.savemsg);
folderidentifier = folder_item_get_identifier(item);
- gtk_entry_set_text(GTK_ENTRY(compose->savemsg_entry), folderidentifier);
+ compose_set_save_to(compose, folderidentifier);
g_free(folderidentifier);
}
@@ -5558,7 +5590,7 @@ static gint compose_queue_sub(Compose *compose, gint *msgnum, FolderItem **item,
if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(compose->savemsg_checkbtn))) {
gchar *savefolderid;
- savefolderid = gtk_editable_get_chars(GTK_EDITABLE(compose->savemsg_entry), 0, -1);
+ savefolderid = compose_get_save_to(compose);
err |= (fprintf(fp, "SCF:%s\n", savefolderid) < 0);
g_free(savefolderid);
}
@@ -6444,7 +6476,7 @@ static GtkWidget *compose_create_others(Compose *compose)
{
GtkWidget *table;
GtkWidget *savemsg_checkbtn;
- GtkWidget *savemsg_entry;
+ GtkWidget *savemsg_combo;
GtkWidget *savemsg_select;
guint rowcount = 0;
@@ -6467,16 +6499,23 @@ static GtkWidget *compose_create_others(Compose *compose)
g_signal_connect(G_OBJECT(savemsg_checkbtn), "toggled",
G_CALLBACK(compose_savemsg_checkbtn_cb), compose);
- savemsg_entry = gtk_entry_new();
- gtk_widget_show(savemsg_entry);
- gtk_table_attach_defaults(GTK_TABLE(table), savemsg_entry, 1, 2, rowcount, rowcount + 1);
- gtk_editable_set_editable(GTK_EDITABLE(savemsg_entry), prefs_common.savemsg);
- g_signal_connect_after(G_OBJECT(savemsg_entry), "grab_focus",
+ savemsg_combo = gtk_combo_box_entry_new_text();
+ compose->savemsg_checkbtn = savemsg_checkbtn;
+ compose->savemsg_combo = savemsg_combo;
+ gtk_widget_show(savemsg_combo);
+
+ if (prefs_common.compose_save_to_history)
+ combobox_set_popdown_strings(GTK_COMBO_BOX(savemsg_combo),
+ prefs_common.compose_save_to_history);
+
+ gtk_table_attach(GTK_TABLE(table), savemsg_combo, 1, 2, rowcount, rowcount + 1, GTK_FILL|GTK_EXPAND, GTK_SHRINK, 0, 0);
+ gtk_widget_set_sensitive(GTK_WIDGET(savemsg_combo), prefs_common.savemsg);
+ g_signal_connect_after(G_OBJECT(savemsg_combo), "grab_focus",
G_CALLBACK(compose_grab_focus_cb), compose);
if (account_get_special_folder(compose->account, F_OUTBOX)) {
folderidentifier = folder_item_get_identifier(account_get_special_folder
(compose->account, F_OUTBOX));
- gtk_entry_set_text(GTK_ENTRY(savemsg_entry), folderidentifier);
+ compose_set_save_to(compose, folderidentifier);
g_free(folderidentifier);
}
@@ -6489,15 +6528,12 @@ static GtkWidget *compose_create_others(Compose *compose)
rowcount++;
- compose->savemsg_checkbtn = savemsg_checkbtn;
- compose->savemsg_entry = savemsg_entry;
-
return table;
}
static void compose_savemsg_checkbtn_cb(GtkWidget *widget, Compose *compose)
{
- gtk_editable_set_editable(GTK_EDITABLE(compose->savemsg_entry),
+ gtk_widget_set_sensitive(GTK_WIDGET(compose->savemsg_combo),
gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(compose->savemsg_checkbtn)));
}
@@ -6511,7 +6547,7 @@ static void compose_savemsg_select_cb(GtkWidget *widget, Compose *compose)
path = folder_item_get_identifier(dest);
- gtk_entry_set_text(GTK_ENTRY(compose->savemsg_entry), path);
+ compose_set_save_to(compose, path);
g_free(path);
}
@@ -8732,11 +8768,11 @@ static void account_activated(GtkComboBox *optmenu, gpointer data)
g_signal_connect(G_OBJECT(compose->savemsg_checkbtn), "toggled",
G_CALLBACK(compose_savemsg_checkbtn_cb), compose);
- gtk_editable_delete_text(GTK_EDITABLE(compose->savemsg_entry), 0, -1);
+ compose_set_save_to(compose, NULL);
if (account_get_special_folder(compose->account, F_OUTBOX)) {
folderidentifier = folder_item_get_identifier(account_get_special_folder
(compose->account, F_OUTBOX));
- gtk_entry_set_text(GTK_ENTRY(compose->savemsg_entry), folderidentifier);
+ compose_set_save_to(compose, folderidentifier);
g_free(folderidentifier);
}
}
@@ -8925,7 +8961,7 @@ gboolean compose_draft (gpointer data, guint action)
if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(compose->savemsg_checkbtn))) {
gchar *savefolderid;
- savefolderid = gtk_editable_get_chars(GTK_EDITABLE(compose->savemsg_entry), 0, -1);
+ savefolderid = compose_get_save_to(compose);
err |= (fprintf(fp, "SCF:%s\n", savefolderid) < 0);
g_free(savefolderid);
}
diff --git a/src/compose.h b/src/compose.h
@@ -110,7 +110,7 @@ struct _Compose
/* Others */
GtkWidget *savemsg_checkbtn;
- GtkWidget *savemsg_entry;
+ GtkWidget *savemsg_combo;
/* Headers notebook */
GtkWidget *notebook;
@@ -200,12 +200,6 @@ struct _Compose
GIOChannel *exteditor_ch;
gint exteditor_tag;
-#if USE_ENCHANT
- /* GNU/aspell spell checker */
- GtkAspell *gtkaspell;
- GtkWidget *aspell_options_menu;
-#endif
-
/* Priority */
gint priority;
@@ -235,6 +229,11 @@ struct _Compose
GtkWidget *first_entry;
GtkUIManager *ui_manager;
+#if USE_ENCHANT
+ /* GNU/aspell spell checker */
+ GtkAspell *gtkaspell;
+ GtkWidget *aspell_options_menu;
+#endif
};
struct _AttachInfo
diff --git a/src/folder_item_prefs.h b/src/folder_item_prefs.h
@@ -52,12 +52,12 @@ struct _FolderItemPrefs {
gint folder_chmod;
gboolean enable_default_account;
gint default_account;
-#if USE_ENCHANT
+
gboolean enable_default_dictionary;
gchar *default_dictionary;
gboolean enable_default_alt_dictionary;
gchar *default_alt_dictionary;
-#endif
+
gboolean save_copy_to_folder;
guint color;
diff --git a/src/prefs_common.c b/src/prefs_common.c
@@ -243,7 +243,7 @@ static PrefParam param[] = {
P_BOOL, NULL, NULL, NULL},
{"autosave_length", "50", &prefs_common.autosave_length, P_INT,
NULL, NULL, NULL},
-#if USE_ENCHANT
+
{"enable_aspell", "TRUE", &prefs_common.enable_aspell, P_BOOL,
NULL, NULL, NULL},
{"dictionary", "", &prefs_common.dictionary, P_STRING,
@@ -260,7 +260,7 @@ static PrefParam param[] = {
NULL, NULL, NULL},
{"use_both_dicts", "FALSE", &prefs_common.use_both_dicts, P_BOOL,
NULL, NULL, NULL},
-#endif
+
{"reply_with_quote", "TRUE", &prefs_common.reply_with_quote, P_BOOL,
NULL, NULL, NULL},
{"compose_dnd_insert_or_attach", "0", &prefs_common.compose_dnd_mode, P_ENUM,
@@ -1212,6 +1212,8 @@ void prefs_common_read_config(void)
prefs_common_read_history(SUMMARY_SEARCH_ADV_CONDITION_HISTORY);
prefs_common.message_search_history =
prefs_common_read_history(MESSAGE_SEARCH_HISTORY);
+ prefs_common.compose_save_to_history =
+ prefs_common_read_history(COMPOSE_SAVE_TO_HISTORY);
prefs_common.addressbook_custom_attributes = addressbook_update_custom_attr_from_prefs();
@@ -1308,6 +1310,8 @@ void prefs_common_write_config(void)
prefs_common.summary_search_adv_condition_history);
prefs_common_save_history(MESSAGE_SEARCH_HISTORY,
prefs_common.message_search_history);
+ prefs_common_save_history(COMPOSE_SAVE_TO_HISTORY,
+ prefs_common.compose_save_to_history);
prefs_common_save_history_to_dir(ADDRBOOK_DIR,
ADDRESSBOOK_CUSTOM_ATTRIBUTES,
diff --git a/src/prefs_common.h b/src/prefs_common.h
@@ -167,7 +167,6 @@ struct _PrefsCommon
gboolean block_cursor;
gchar *quote_chars;
-#if USE_ENCHANT
gboolean enable_aspell;
gchar *dictionary;
gchar *alt_dictionary;
@@ -176,7 +175,6 @@ struct _PrefsCommon
gboolean recheck_when_changing_dict;
gboolean use_alternate;
gboolean use_both_dicts;
-#endif
/* Display */
/* obsolete fonts */
@@ -426,6 +424,7 @@ struct _PrefsCommon
GList *summary_search_body_history;
GList *summary_search_adv_condition_history;
GList *message_search_history;
+ GList *compose_save_to_history;
gint filteringwin_width;
gint filteringwin_height;