From bcad7ac02f04d81825aa47521f98829f7cc4764d Mon Sep 17 00:00:00 2001 From: Fabian Keil Date: Tue, 5 Apr 2011 18:13:24 +0200 Subject: [PATCH 1/4] Make setting the X-Mailer header an account option. Enabled by default. --- src/account.c | 1 + src/compose.c | 3 ++- src/prefs_account.c | 22 ++++++++++++++++++++++ src/prefs_account.h | 1 + 4 files changed, 26 insertions(+), 1 deletions(-) diff --git a/src/account.c b/src/account.c index 25171a6..a3ce627 100644 --- a/src/account.c +++ b/src/account.c @@ -938,6 +938,7 @@ static void account_clone(GtkWidget *widget, gpointer data) /* send */ ACP_FASSIGN(gen_msgid); + ACP_FASSIGN(gen_xmailer); ACP_FASSIGN(add_customhdr); ACP_FASSIGN(use_smtp_auth); ACP_FASSIGN(smtp_auth_type); diff --git a/src/compose.c b/src/compose.c index e8ace86..848f027 100644 --- a/src/compose.c +++ b/src/compose.c @@ -6232,7 +6232,8 @@ static gchar *compose_get_header(Compose *compose) } /* Program version and system info */ - if (g_slist_length(compose->to_list) && !IS_IN_CUSTOM_HEADER("X-Mailer") && + if (compose->account->gen_xmailer && + g_slist_length(compose->to_list) && !IS_IN_CUSTOM_HEADER("X-Mailer") && !compose->newsgroup_list) { g_string_append_printf(header, "X-Mailer: %s (GTK+ %d.%d.%d; %s)\n", prog_version, diff --git a/src/prefs_account.c b/src/prefs_account.c index 705e66b..bef8c6e 100644 --- a/src/prefs_account.c +++ b/src/prefs_account.c @@ -162,6 +162,7 @@ typedef struct SendPage GtkWidget *vbox; GtkWidget *msgid_checkbtn; + GtkWidget *xmailer_checkbtn; GtkWidget *customhdr_checkbtn; GtkWidget *msgid_with_addr_checkbtn; GtkWidget *smtp_auth_checkbtn; @@ -500,6 +501,10 @@ static PrefParam send_param[] = { &send_page.msgid_checkbtn, prefs_set_data_from_toggle, prefs_set_toggle}, + {"generate_xmailer", "TRUE", &tmp_ac_prefs.gen_xmailer, P_BOOL, + &send_page.xmailer_checkbtn, + prefs_set_data_from_toggle, prefs_set_toggle}, + {"add_custom_header", "FALSE", &tmp_ac_prefs.add_customhdr, P_BOOL, &send_page.customhdr_checkbtn, prefs_set_data_from_toggle, prefs_set_toggle}, @@ -1652,6 +1657,7 @@ static void send_create_widget_func(PrefsPage * _page, GtkWidget *vbox2; GtkWidget *frame; GtkWidget *msgid_checkbtn; + GtkWidget *xmailer_checkbtn; GtkWidget *hbox; GtkWidget *customhdr_checkbtn; GtkWidget *customhdr_edit_btn; @@ -1683,6 +1689,8 @@ static void send_create_widget_func(PrefsPage * _page, PACK_CHECK_BUTTON (vbox2, checkbtn_msgid_with_addr, _("Send account mail address in Message-ID")); + PACK_CHECK_BUTTON (vbox2, xmailer_checkbtn, _("Generate X-Mailer")); + hbox = gtk_hbox_new (FALSE, 12); gtk_widget_show (hbox); gtk_box_pack_start (GTK_BOX (vbox2), hbox, FALSE, FALSE, 0); @@ -1831,6 +1839,7 @@ static void send_create_widget_func(PrefsPage * _page, gtk_box_pack_start (GTK_BOX (hbox), pop_auth_minutes_lbl, FALSE, FALSE, 0); page->msgid_checkbtn = msgid_checkbtn; + page->xmailer_checkbtn = xmailer_checkbtn; page->customhdr_checkbtn = customhdr_checkbtn; page->msgid_with_addr_checkbtn = checkbtn_msgid_with_addr; @@ -3909,8 +3918,12 @@ static void prefs_account_protocol_set_optmenu(PrefParam *pparam) GTK_TOGGLE_BUTTON(send_page.msgid_checkbtn), TRUE); gtk_widget_hide(send_page.msgid_checkbtn); + /* XXX: unsure what this is for */ + gtk_widget_hide(send_page.xmailer_checkbtn); } else { gtk_widget_show(send_page.msgid_checkbtn); + /* XXX: unsure what this is for */ + gtk_widget_show(send_page.xmailer_checkbtn); } } } @@ -4060,6 +4073,7 @@ static void prefs_account_protocol_changed(GtkComboBox *combobox, gpointer data) gtk_widget_hide(protocol_optmenu->no_imap_warn_label); #endif gtk_widget_show(send_page.msgid_checkbtn); + gtk_widget_show(send_page.xmailer_checkbtn); gtk_widget_show(basic_page.nntpserv_label); gtk_widget_show(basic_page.nntpserv_entry); gtk_table_set_row_spacing (GTK_TABLE (basic_page.serv_table), @@ -4157,6 +4171,7 @@ static void prefs_account_protocol_changed(GtkComboBox *combobox, gpointer data) break; case A_LOCAL: gtk_widget_show(send_page.msgid_checkbtn); + gtk_widget_show(send_page.xmailer_checkbtn); gtk_widget_hide(protocol_optmenu->no_imap_warn_icon); gtk_widget_hide(protocol_optmenu->no_imap_warn_label); gtk_widget_hide(basic_page.nntpserv_label); @@ -4260,6 +4275,11 @@ static void prefs_account_protocol_changed(GtkComboBox *combobox, gpointer data) GTK_TOGGLE_BUTTON(send_page.msgid_checkbtn), TRUE); gtk_widget_hide(send_page.msgid_checkbtn); + if (new_account) + gtk_toggle_button_set_active( + GTK_TOGGLE_BUTTON(send_page.xmailer_checkbtn), + TRUE); + gtk_widget_hide(send_page.xmailer_checkbtn); gtk_widget_hide(basic_page.nntpserv_label); gtk_widget_hide(basic_page.nntpserv_entry); gtk_table_set_row_spacing (GTK_TABLE (basic_page.serv_table), @@ -4356,6 +4376,7 @@ static void prefs_account_protocol_changed(GtkComboBox *combobox, gpointer data) break; case A_NONE: gtk_widget_show(send_page.msgid_checkbtn); + gtk_widget_show(send_page.xmailer_checkbtn); gtk_widget_hide(protocol_optmenu->no_imap_warn_icon); gtk_widget_hide(protocol_optmenu->no_imap_warn_label); gtk_widget_hide(basic_page.nntpserv_label); @@ -4450,6 +4471,7 @@ static void prefs_account_protocol_changed(GtkComboBox *combobox, gpointer data) case A_POP3: default: gtk_widget_show(send_page.msgid_checkbtn); + gtk_widget_show(send_page.xmailer_checkbtn); gtk_widget_hide(protocol_optmenu->no_imap_warn_icon); gtk_widget_hide(protocol_optmenu->no_imap_warn_label); gtk_widget_hide(basic_page.nntpserv_label); diff --git a/src/prefs_account.h b/src/prefs_account.h index ce8689a..4dc5227 100644 --- a/src/prefs_account.h +++ b/src/prefs_account.h @@ -106,6 +106,7 @@ struct _PrefsAccount /* Send */ gboolean gen_msgid; + gboolean gen_xmailer; gboolean add_customhdr; gboolean use_smtp_auth; SMTPAuthType smtp_auth_type; -- 1.7.6 From d704a0ddf218774bfaffc1a6600b9fa8f9a11524 Mon Sep 17 00:00:00 2001 From: Fabian Keil Date: Mon, 25 Apr 2011 12:06:30 +0200 Subject: [PATCH 2/4] Remove a stray ECHO that caused quicksearch strings with spaces to be dumped to stdout --- src/matcher_parser_lex.c | 1 - 1 files changed, 0 insertions(+), 1 deletions(-) diff --git a/src/matcher_parser_lex.c b/src/matcher_parser_lex.c index a6abec5..878d91c 100644 --- a/src/matcher_parser_lex.c +++ b/src/matcher_parser_lex.c @@ -1035,7 +1035,6 @@ YY_RULE_SETUP case 17: YY_RULE_SETUP #line 131 "matcher_parser_lex.l" -ECHO; YY_BREAK #line 1041 "matcher_parser_lex.c" case YY_STATE_EOF(INITIAL): -- 1.7.6 From 438266b656d17d4d272b8f36caa6a14130b59a36 Mon Sep 17 00:00:00 2001 From: Fabian Keil Date: Sat, 9 Apr 2011 23:19:59 +0200 Subject: [PATCH 3/4] Truncate the tooltip text after 150 characters. Works around crashes in gdk with long space-less headers in the summaryview. --- src/summaryview.c | 19 ++++++++++++++++++- 1 files changed, 18 insertions(+), 1 deletions(-) diff --git a/src/summaryview.c b/src/summaryview.c index 0128ed6..2e4db5b 100644 --- a/src/summaryview.c +++ b/src/summaryview.c @@ -6177,6 +6177,7 @@ static gboolean tooltip_cb (GtkWidget *widget, MsgInfo *info = NULL; GdkRectangle rect; gboolean vert = (prefs_common.layout_mode == VERTICAL_LAYOUT); + static const int max_characters_in_tooltip_text = 150; if (!prefs_common.show_tooltips) return FALSE; @@ -6212,7 +6213,23 @@ static gboolean tooltip_cb (GtkWidget *widget, if (!text || !*text) return FALSE; - formatted = g_strdup(text); + /* + * Really long words in tooltip texts cause gdk to abort(). + * Workaround this by limiting the text to max_characters_in_tooltip_text characters. + */ + if (g_utf8_strlen(text, max_characters_in_tooltip_text+1) < max_characters_in_tooltip_text) + formatted = g_strdup(text); + else + { + gchar *tmp; + static const gchar truncation_signs[] = " [...]"; + formatted = g_strndup(text, max_characters_in_tooltip_text); + if (!formatted) + return FALSE; + tmp = g_utf8_find_prev_char(formatted, formatted+max_characters_in_tooltip_text-sizeof(truncation_signs)); + g_utf8_strncpy(tmp, truncation_signs, sizeof(truncation_signs)); + debug_print("Truncated tooltip text to %s\n", formatted); + } g_strstrip(formatted); if (!vert) -- 1.7.6 From a9f13c2d2189239baa5e288a6d010864ec42d358 Mon Sep 17 00:00:00 2001 From: Fabian Keil Date: Wed, 9 Nov 2011 18:52:29 +0100 Subject: [PATCH 4/4] 3.7.10cvs80 --- src/summaryview.c | 2 ++ 1 files changed, 2 insertions(+), 0 deletions(-) diff --git a/src/summaryview.c b/src/summaryview.c index 2e4db5b..5e7f5ef 100644 --- a/src/summaryview.c +++ b/src/summaryview.c @@ -3626,6 +3626,8 @@ void summary_toggle_view(SummaryView *summaryview) { if (prefs_common.layout_mode == SMALL_LAYOUT) return; + if (summary_is_locked(summaryview)) + return; if (!messageview_is_visible(summaryview->messageview) && summaryview->selected && summary_is_list(summaryview)) summary_display_msg(summaryview, -- 1.7.6