From 0b1da2af7808e029fc8f7dd934c5ccbebcb8cc2d Mon Sep 17 00:00:00 2001 From: Erik Kundt Date: Thu, 16 May 2024 15:19:29 +0200 Subject: [PATCH] lib: Pass event to event callback --- src/ui/widget.rs | 2 +- src/ui/widget/container.rs | 2 +- src/ui/widget/input.rs | 2 +- src/ui/widget/list.rs | 2 +- src/ui/widget/text.rs | 2 +- src/ui/widget/window.rs | 6 ++++++ 6 files changed, 11 insertions(+), 5 deletions(-) diff --git a/src/ui/widget.rs b/src/ui/widget.rs index b33f4417..05e2eda4 100644 --- a/src/ui/widget.rs +++ b/src/ui/widget.rs @@ -17,7 +17,7 @@ use ratatui::widgets::Cell; pub type BoxedWidget = Box>; pub type UpdateCallback = fn(&S) -> Box; -pub type EventCallback = fn(&mut dyn Any); +pub type EventCallback = fn(&mut dyn Any, Key); /// A `WidgetBase` provides common functionality to a `Widget`. It's used to store /// event and update callbacks as well sending messages to the UI's message channel. diff --git a/src/ui/widget/container.rs b/src/ui/widget/container.rs index 4eb11fb0..c98bf55e 100644 --- a/src/ui/widget/container.rs +++ b/src/ui/widget/container.rs @@ -554,7 +554,7 @@ where } if let Some(on_event) = self.base.on_event { - (on_event)(self); + (on_event)(self, key); } } diff --git a/src/ui/widget/input.rs b/src/ui/widget/input.rs index d3352be1..52660662 100644 --- a/src/ui/widget/input.rs +++ b/src/ui/widget/input.rs @@ -172,7 +172,7 @@ where } if let Some(on_event) = self.base.on_event { - (on_event)(self); + (on_event)(self, key); } } diff --git a/src/ui/widget/list.rs b/src/ui/widget/list.rs index e8f90475..9c8254d2 100644 --- a/src/ui/widget/list.rs +++ b/src/ui/widget/list.rs @@ -198,7 +198,7 @@ where } if let Some(on_event) = self.base.on_event { - (on_event)(self); + (on_event)(self, key); } } diff --git a/src/ui/widget/text.rs b/src/ui/widget/text.rs index 488d026d..1e00cdff 100644 --- a/src/ui/widget/text.rs +++ b/src/ui/widget/text.rs @@ -186,7 +186,7 @@ where } if let Some(on_event) = self.base.on_event { - (on_event)(self); + (on_event)(self, key); } } diff --git a/src/ui/widget/window.rs b/src/ui/widget/window.rs index 52f466d3..a0dd7b76 100644 --- a/src/ui/widget/window.rs +++ b/src/ui/widget/window.rs @@ -57,6 +57,8 @@ where impl<'a, S, M, Id> Widget for Window where 'a: 'static, + S: 'static, + M: 'static, Id: Clone + Hash + Eq + PartialEq + 'static, { type Message = M; @@ -83,6 +85,10 @@ where if let Some(page) = page { page.handle_event(key); } + + if let Some(on_event) = self.base.on_event { + (on_event)(self, key); + } } fn update(&mut self, state: &S) {