Radish alpha
r
Radicle terminal user interface
Radicle
Git (anonymous pull)
Log in to clone via SSH
lib: Pass event to event callback
Erik Kundt committed 1 year ago
commit 0b1da2af7808e029fc8f7dd934c5ccbebcb8cc2d
parent a29d1d6895356962cfc5abf0eabcf17851788585
6 files changed +11 -5
modified src/ui/widget.rs
@@ -17,7 +17,7 @@ use ratatui::widgets::Cell;
pub type BoxedWidget<S, M> = Box<dyn Widget<State = S, Message = M>>;

pub type UpdateCallback<S> = fn(&S) -> Box<dyn Any>;
-
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.
modified 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);
        }
    }

modified 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);
        }
    }

modified 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);
        }
    }

modified 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);
        }
    }

modified src/ui/widget/window.rs
@@ -57,6 +57,8 @@ where
impl<'a, S, M, Id> Widget for Window<S, M, Id>
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) {