From 7432be5aaa0f305c5253908b0d8bc40473041e51 Mon Sep 17 00:00:00 2001 From: Manos Pitsidianakis Date: Thu, 12 Dec 2019 11:07:54 +0200 Subject: [PATCH] ui/listings: truncate subject at 150 grapheme width Large subjects would cause large CellBuffer allocations. --- ui/src/components/mail/listing/compact.rs | 6 ++++-- ui/src/components/mail/listing/conversations.rs | 6 ++++-- ui/src/components/mail/listing/plain.rs | 4 +++- 3 files changed, 11 insertions(+), 5 deletions(-) diff --git a/ui/src/components/mail/listing/compact.rs b/ui/src/components/mail/listing/compact.rs index d9c8e0b6d..2aa2f6788 100644 --- a/ui/src/components/mail/listing/compact.rs +++ b/ui/src/components/mail/listing/compact.rs @@ -563,10 +563,12 @@ impl CompactListing { tags.pop(); } } + let mut subject = e.subject().to_string(); + subject.truncate_at_boundary(150); if thread_node.len() > 0 { EntryStrings { date: DateString(ConversationsListing::format_date(thread_node)), - subject: SubjectString(format!("{} ({})", e.subject(), thread_node.len(),)), + subject: SubjectString(format!("{} ({})", subject, thread_node.len(),)), flag: FlagString(format!( "{}{}", if e.has_attachments() { "📎" } else { "" }, @@ -578,7 +580,7 @@ impl CompactListing { } else { EntryStrings { date: DateString(ConversationsListing::format_date(thread_node)), - subject: SubjectString(e.subject().to_string()), + subject: SubjectString(subject), flag: FlagString(format!( "{}{}", if e.has_attachments() { "📎" } else { "" }, diff --git a/ui/src/components/mail/listing/conversations.rs b/ui/src/components/mail/listing/conversations.rs index 437ddc0f9..9cfd2543b 100644 --- a/ui/src/components/mail/listing/conversations.rs +++ b/ui/src/components/mail/listing/conversations.rs @@ -558,10 +558,12 @@ impl ConversationsListing { tags.pop(); } } + let mut subject = e.subject().to_string(); + subject.truncate_at_boundary(150); if thread_node.len() > 0 { EntryStrings { date: DateString(ConversationsListing::format_date(thread_node)), - subject: SubjectString(format!("{} ({})", e.subject(), thread_node.len(),)), + subject: SubjectString(format!("{} ({})", subject, thread_node.len(),)), flag: FlagString(format!( "{}{}", if e.has_attachments() { "📎" } else { "" }, @@ -573,7 +575,7 @@ impl ConversationsListing { } else { EntryStrings { date: DateString(ConversationsListing::format_date(thread_node)), - subject: SubjectString(e.subject().to_string()), + subject: SubjectString(subject), flag: FlagString(format!( "{}{}", if e.has_attachments() { "📎" } else { "" }, diff --git a/ui/src/components/mail/listing/plain.rs b/ui/src/components/mail/listing/plain.rs index 22757bcea..be72d6d8b 100644 --- a/ui/src/components/mail/listing/plain.rs +++ b/ui/src/components/mail/listing/plain.rs @@ -536,9 +536,11 @@ impl PlainListing { tags.pop(); } } + let mut subject = e.subject().to_string(); + subject.truncate_at_boundary(150); EntryStrings { date: DateString(PlainListing::format_date(&e)), - subject: SubjectString(format!("{}", e.subject())), + subject: SubjectString(subject), flag: FlagString(format!("{}", if e.has_attachments() { "📎" } else { "" },)), from: FromString(address_list!((e.from()) as comma_sep_list)), tags: TagString(tags, colors),