diff options
author | rabite <rabite@posteo.de> | 2019-03-10 12:05:00 +0100 |
---|---|---|
committer | rabite <rabite@posteo.de> | 2019-03-10 12:05:00 +0100 |
commit | e1a9d62b16647c10297269c077c177067cf2d517 (patch) | |
tree | 90a4fad097daa671b392a73d59725eacd3692fc6 /src/widget.rs | |
parent | 7697811547b2d4c140e7c07ce112597085a04e65 (diff) |
show status messages again
Diffstat (limited to 'src/widget.rs')
-rw-r--r-- | src/widget.rs | 21 |
1 files changed, 17 insertions, 4 deletions
diff --git a/src/widget.rs b/src/widget.rs index 6dfac9b..87d0b2f 100644 --- a/src/widget.rs +++ b/src/widget.rs @@ -19,6 +19,7 @@ pub enum Events { InputEvent(Event), WidgetReady, ExclusiveEvent(Option<Sender<Events>>), + Status(String) } impl PartialEq for WidgetCore { @@ -107,6 +108,7 @@ pub trait Widget { fn on_event(&mut self, event: Event) -> HResult<()> { + self.clear_status().log(); match event { Event::Key(Key::Char('q')) => HError::quit(), Event::Key(key) => self.on_key(key), @@ -290,6 +292,9 @@ pub trait Widget { } self.draw().ok(); }, + Events::Status(status) => { + self.show_status(&status).log(); + } _ => { self.refresh().ok(); self.draw().ok(); @@ -301,9 +306,10 @@ pub trait Widget { fn draw_status(&self) -> HResult<()> { let xsize = term::xsize() as u16; - let status = &self.get_core()?.status_bar_content; - - let status = status.lock()?; + let status = match self.get_core()?.status_bar_content.lock()?.as_ref() { + Some(status) => status.to_string(), + None => "".to_string(), + }; self.write_to_screen( &format!( @@ -312,7 +318,7 @@ pub trait Widget { term::status_bg(), " ", term::move_bottom(), - status.as_ref()?, + status, xsize = xsize as usize )).log(); @@ -328,6 +334,13 @@ pub trait Widget { Ok(()) } + fn clear_status(&self) -> HResult<()> { + if self.get_core()?.status_bar_content.lock()?.take().is_some() { + self.draw_status().log(); + } + Ok(()) + } + fn minibuffer(&self, query: &str) -> HResult<String> { let answer = self.get_core()?.minibuffer.lock()?.as_mut()?.query(query); let mut screen = self.get_core()?.screen.lock()?; |