summaryrefslogtreecommitdiffstats
path: root/src/widget.rs
diff options
context:
space:
mode:
authorrabite <rabite@posteo.de>2019-03-09 11:06:13 +0100
committerrabite <rabite@posteo.de>2019-03-09 11:06:13 +0100
commit5d456539015876c1891bf0ac05b8f7dd3fbe8d57 (patch)
tree39e2e42cd28773eb9ac785d0430b51f72e6876d6 /src/widget.rs
parent6e02ef6486b6660b69136e19c7086e8b2b3eb7ee (diff)
use enum to allow multiple widget types in hbox
Diffstat (limited to 'src/widget.rs')
-rw-r--r--src/widget.rs21
1 files changed, 9 insertions, 12 deletions
diff --git a/src/widget.rs b/src/widget.rs
index ba409cd..6dfac9b 100644
--- a/src/widget.rs
+++ b/src/widget.rs
@@ -4,7 +4,6 @@ use std::sync::mpsc::{Sender, Receiver, channel};
use termion::event::{Event, Key, MouseEvent};
use termion::input::TermRead;
use termion::screen::AlternateScreen;
-use failure::Backtrace;
use crate::coordinates::{Coordinates, Position, Size};
@@ -81,15 +80,12 @@ impl WidgetCore {
}
pub trait Widget {
- fn get_widget(&self) -> Box<dyn Widget> {
- Box::new(crate::textview::TextView::new_blank(self.get_core().unwrap()))
- }
- fn get_core(&self) -> HResult<&WidgetCore> {
- Err(HError::NoWidgetCoreError(Backtrace::new()))
- }
- fn get_core_mut(&mut self) -> HResult<&mut WidgetCore> {
- Err(HError::NoWidgetCoreError(Backtrace::new()))
- }
+ fn get_core(&self) -> HResult<&WidgetCore>; // {
+ // Err(HError::NoWidgetCoreError(Backtrace::new()))
+ // }
+ fn get_core_mut(&mut self) -> HResult<&mut WidgetCore> ;// {
+ // Err(HError::NoWidgetCoreError(Backtrace::new()))
+ // }
fn get_coordinates(&self) -> HResult<&Coordinates> {
Ok(&self.get_core()?.coordinates)
}
@@ -205,6 +201,7 @@ pub trait Widget {
fn popup(&mut self) -> HResult<()> {
self.run_widget().log();
+ self.clear().log();
self.get_core()?.get_sender().send(Events::ExclusiveEvent(None))?;
Ok(())
}
@@ -355,9 +352,9 @@ fn dispatch_events(rx: Receiver<Events>, tx: Sender<Events>) {
_ => {}
}
if let Some(tx_event) = &tx_exclusive_event {
- tx_event.send(event).unwrap();
+ tx_event.send(event).ok();
} else {
- tx.send(event).unwrap();
+ tx.send(event).ok();
}
}
});