mirror of
https://github.com/FliegendeWurst/cursive.git
synced 2024-11-27 19:26:09 +00:00
Merge branch 'master' into get-child
This commit is contained in:
commit
4e2b8adf3d
@ -42,7 +42,7 @@ use view::{View, ViewWrapper};
|
|||||||
/// .on_event(event::Key::Esc, |s| s.quit());
|
/// .on_event(event::Key::Esc, |s| s.quit());
|
||||||
/// ```
|
/// ```
|
||||||
pub struct OnEventView<T: View> {
|
pub struct OnEventView<T: View> {
|
||||||
inner: T,
|
view: T,
|
||||||
callbacks: HashMap<Event, Action<T>>,
|
callbacks: HashMap<Event, Action<T>>,
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -72,7 +72,7 @@ impl<T: View> OnEventView<T> {
|
|||||||
/// Wraps the given view in a new OnEventView.
|
/// Wraps the given view in a new OnEventView.
|
||||||
pub fn new(view: T) -> Self {
|
pub fn new(view: T) -> Self {
|
||||||
OnEventView {
|
OnEventView {
|
||||||
inner: view,
|
view: view,
|
||||||
callbacks: HashMap::new(),
|
callbacks: HashMap::new(),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -216,7 +216,7 @@ impl<T: View> OnEventView<T> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
impl<T: View> ViewWrapper for OnEventView<T> {
|
impl<T: View> ViewWrapper for OnEventView<T> {
|
||||||
wrap_impl!(self.inner: T);
|
wrap_impl!(self.view: T);
|
||||||
|
|
||||||
fn wrap_on_event(&mut self, event: Event) -> EventResult {
|
fn wrap_on_event(&mut self, event: Event) -> EventResult {
|
||||||
let action = self.callbacks.get(&event).cloned();
|
let action = self.callbacks.get(&event).cloned();
|
||||||
@ -227,12 +227,12 @@ impl<T: View> ViewWrapper for OnEventView<T> {
|
|||||||
|
|
||||||
if pre_child {
|
if pre_child {
|
||||||
action
|
action
|
||||||
.and_then(|a| (*a.callback)(&mut self.inner))
|
.and_then(|a| (*a.callback)(&mut self.view))
|
||||||
.unwrap_or_else(|| self.inner.on_event(event))
|
.unwrap_or_else(|| self.view.on_event(event))
|
||||||
} else {
|
} else {
|
||||||
self.inner.on_event(event).or_else(|| {
|
self.view.on_event(event).or_else(|| {
|
||||||
action
|
action
|
||||||
.and_then(|a| (*a.callback)(&mut self.inner))
|
.and_then(|a| (*a.callback)(&mut self.view))
|
||||||
.unwrap_or(EventResult::Ignored)
|
.unwrap_or(EventResult::Ignored)
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user