From d2aa2d3a3056094b81fcd7faedc8107190599503 Mon Sep 17 00:00:00 2001 From: Fabian Keil Date: Sat, 9 Apr 2011 23:19:59 +0200 Subject: [PATCH 1/3] 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 3d2f5f8..2330840 100644 --- a/src/summaryview.c +++ b/src/summaryview.c @@ -6191,6 +6191,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; @@ -6226,7 +6227,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 23f59d98ec6d799bf70d43ad4663fe001a3cd3fb Mon Sep 17 00:00:00 2001 From: Fabian Keil Date: Mon, 25 Apr 2011 12:06:30 +0200 Subject: [PATCH 2/3] 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 bb2e378..b1935d7 100644 --- a/src/matcher_parser_lex.c +++ b/src/matcher_parser_lex.c @@ -999,7 +999,6 @@ YY_RULE_SETUP case 17: YY_RULE_SETUP #line 131 "matcher_parser_lex.l" -ECHO; YY_BREAK #line 1005 "matcher_parser_lex.c" case YY_STATE_EOF(INITIAL): -- 1.7.6 From fc87135cf92ccb5172a55a02863a8c2473a34b8e Mon Sep 17 00:00:00 2001 From: Fabian Keil Date: Mon, 29 Aug 2011 17:39:09 +0200 Subject: [PATCH 3/3] Do not suppress the 'Generate X-Mailer' option for new IMAP accounts While at it, remove redundant gtk_widget_show() calls. The option is enabled by default. --- src/prefs_account.c | 11 ----------- 1 files changed, 0 insertions(+), 11 deletions(-) diff --git a/src/prefs_account.c b/src/prefs_account.c index 7f53ecb..5a4621b 100644 --- a/src/prefs_account.c +++ b/src/prefs_account.c @@ -3921,8 +3921,6 @@ static void prefs_account_protocol_set_optmenu(PrefParam *pparam) gtk_widget_hide(send_page.msgid_checkbtn); } else gtk_widget_show(send_page.msgid_checkbtn); - - gtk_widget_show(send_page.xmailer_checkbtn); } } @@ -4071,7 +4069,6 @@ 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), @@ -4169,7 +4166,6 @@ 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); @@ -4273,11 +4269,6 @@ 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), @@ -4374,7 +4365,6 @@ 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); @@ -4469,7 +4459,6 @@ 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); -- 1.7.6