From 2b06dd1aca91eaaf388d28b06c09164ba65cd542 Mon Sep 17 00:00:00 2001 From: Manos Pitsidianakis Date: Mon, 18 Mar 2019 15:41:38 +0200 Subject: ui: fix pager from_buf reflowing incompatibility --- ui/src/components/mail/view.rs | 12 ++++++++++-- ui/src/components/mail/view/envelope.rs | 18 +++++++++++++++--- ui/src/components/mail/view/html.rs | 3 +-- ui/src/components/utilities.rs | 9 +++++++-- ui/src/components/utilities/widgets.rs | 8 +++++--- 5 files changed, 38 insertions(+), 12 deletions(-) (limited to 'ui') diff --git a/ui/src/components/mail/view.rs b/ui/src/components/mail/view.rs index 3e93daa9..800a565d 100644 --- a/ui/src/components/mail/view.rs +++ b/ui/src/components/mail/view.rs @@ -326,17 +326,25 @@ impl Component for MailView { } ViewMode::Subview | ViewMode::ContactSelector(_) => {} _ => { - let buf = { + let text = { + self.attachment_to_text(&body) + /* let text = self.attachment_to_text(&body); // URL indexes must be colored (ugh..) MailView::plain_text_to_buf(&text, self.mode == ViewMode::Url) + */ }; let cursor_pos = if self.mode.is_attachment() { Some(0) } else { self.pager.as_mut().map(|p| p.cursor_pos()) }; - self.pager = Some(Pager::from_buf(buf.split_newlines(), cursor_pos)); + self.pager = Some(Pager::from_string( + text, + Some(context), + cursor_pos, + Some(width!(area)), + )); self.subview = None; } }; diff --git a/ui/src/components/mail/view/envelope.rs b/ui/src/components/mail/view/envelope.rs index e9668bd8..9f028195 100644 --- a/ui/src/components/mail/view/envelope.rs +++ b/ui/src/components/mail/view/envelope.rs @@ -160,6 +160,9 @@ impl EnvelopeView { } } } + /* + * TODO: add recolor changes so that this function returns a vector of required highlights + * to pass to write_string... pub fn plain_text_to_buf(s: &str, highlight_urls: bool) -> CellBuffer { let mut buf = CellBuffer::from(s); @@ -192,6 +195,7 @@ impl EnvelopeView { } buf } + */ } impl Component for EnvelopeView { @@ -294,17 +298,25 @@ impl Component for EnvelopeView { self.mode = ViewMode::Subview; } _ => { - let buf = { + let text = { + self.attachment_to_text(&body) + /* let text = self.attachment_to_text(&body); // URL indexes must be colored (ugh..) EnvelopeView::plain_text_to_buf(&text, self.mode == ViewMode::Url) + */ }; let cursor_pos = if self.mode.is_attachment() { Some(0) } else { self.pager.as_mut().map(|p| p.cursor_pos()) }; - self.pager = Some(Pager::from_buf(buf.split_newlines(), cursor_pos)); + self.pager = Some(Pager::from_string( + text, + Some(context), + cursor_pos, + Some(width!(area)), + )); } }; self.dirty = false; @@ -380,7 +392,7 @@ impl Component for EnvelopeView { self.mode = ViewMode::Subview; self.subview = Some(Box::new(Pager::from_string( String::from_utf8_lossy(&decode_rec(u, None)).to_string(), - context, + Some(context), None, None, ))); diff --git a/ui/src/components/mail/view/html.rs b/ui/src/components/mail/view/html.rs index bed8e216..4eb4f2bc 100644 --- a/ui/src/components/mail/view/html.rs +++ b/ui/src/components/mail/view/html.rs @@ -49,8 +49,7 @@ impl HtmlView { &html_filter.wait_with_output().unwrap().stdout, )); - let buf = MailView::plain_text_to_buf(&display_text, true); - let pager = Pager::from_buf(buf.split_newlines(), None); + let pager = Pager::from_string(display_text, None, None, None); HtmlView { pager, bytes } } } diff --git a/ui/src/components/utilities.rs b/ui/src/components/utilities.rs index 293e6894..e097514f 100644 --- a/ui/src/components/utilities.rs +++ b/ui/src/components/utilities.rs @@ -254,12 +254,17 @@ impl Pager { } pub fn from_string( mut text: String, - context: &mut Context, + context: Option<&Context>, cursor_pos: Option, width: Option, ) -> Self { - let pager_filter: Option<&String> = context.settings.pager.filter.as_ref(); + let pager_filter: Option<&String> = if let Some(context) = context { + context.settings.pager.filter.as_ref() //let format_flowed: bool = context.settings.pager.format_flowed; + } else { + None + }; + if let Some(bin) = pager_filter { use std::io::Write; use std::process::{Command, Stdio}; diff --git a/ui/src/components/utilities/widgets.rs b/ui/src/components/utilities/widgets.rs index d2e6d379..3b397254 100644 --- a/ui/src/components/utilities/widgets.rs +++ b/ui/src/components/utilities/widgets.rs @@ -157,9 +157,11 @@ impl Component for Field { } } }, - UIEventType::InsertInput(Key::Char(k)) => if let Text(ref mut s, _) = self { - s.insert_char(k); - }, + UIEventType::InsertInput(Key::Char(k)) => { + if let Text(ref mut s, _) = self { + s.insert_char(k); + } + } UIEventType::InsertInput(Key::Backspace) => match self { Text(ref mut s, auto_complete) => { s.backspace(); -- cgit v1.2.3