added functions for IResponder

This commit is contained in:
michael-bailey 2022-04-23 17:14:27 +01:00
parent 0f159a2d59
commit 9f88a81c2a
1 changed files with 13 additions and 2 deletions

View File

@ -1,6 +1,17 @@
use crate::event::Event;
use std::sync::Weak;
pub(crate) trait IResponder {
fn accepts_event(&self, event: &Event) -> bool;
pub trait IResponder {
fn post_event(&self, event: Event) {
if let Some(next) = self.get_next() {
if let Some(next) = next.upgrade() {
next.post_event(event);
return;
}
}
self.r#final(event);
}
fn get_next(&self) -> Option<Weak<dyn IResponder>>;
fn on_event(&self, event: Event);
fn r#final(&self, _event: Event) {}
}