diff --git a/src/extensions/mod.rs b/src/extensions/mod.rs index ee53bf9..f6abdc5 100644 --- a/src/extensions/mod.rs +++ b/src/extensions/mod.rs @@ -22,13 +22,9 @@ use crate::{ pub trait Extension { fn init(&mut self, _ctx: &ExtensionContext) {} + fn event(&mut self, _ctx: &ExtensionContext, _event: &dyn Event) {} fn on_close(&mut self) {} - fn render_widget( - &mut self, - _scope: &mut RenderScope, - _widget: &Arc, - ) { - } + fn render_widget(&mut self, _scope: &mut RenderScope, _widget: &Arc) {} } pub trait Event: Send + Sync { @@ -84,6 +80,10 @@ impl ExtensionContext { for widget in self.screen.widgets.lock().unwrap().iter() { widget.event(e); } + + for ext in self.screen.extensions.lock().unwrap().iter() { + ext.lock().unwrap().event(self, e); + } } pub fn get_widgets(&self) -> MutexGuard>> {