summaryrefslogtreecommitdiffstats
path: root/src/widget.rs
diff options
context:
space:
mode:
authorrabite <rabite@posteo.de>2019-03-10 12:05:00 +0100
committerrabite <rabite@posteo.de>2019-03-10 12:05:00 +0100
commite1a9d62b16647c10297269c077c177067cf2d517 (patch)
tree90a4fad097daa671b392a73d59725eacd3692fc6 /src/widget.rs
parent7697811547b2d4c140e7c07ce112597085a04e65 (diff)
show status messages again
Diffstat (limited to 'src/widget.rs')
-rw-r--r--src/widget.rs21
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()?;