clean up a bit

This commit is contained in:
2025-09-25 12:43:11 -04:00
parent 21f15fb9c5
commit cfd5cda0b2
2 changed files with 10 additions and 31 deletions

View File

@@ -264,13 +264,9 @@ impl<E: Event<Ctx, Data = <Senses as Event<Ctx>>::Data> + Into<Senses>, Ctx: 'st
}); });
} }
fn run<'a>( fn run<'a>(&self, id: &Id, event: E) -> Option<impl Fn(&mut Ctx, E::Data) + use<'a, E, Ctx>> {
&mut self,
id: &Id,
event: E,
) -> Option<impl Fn(&mut Ctx, E::Data) + use<'a, E, Ctx>> {
let senses = event.into(); let senses = event.into();
if let Some(group) = self.map.get_mut(id) { if let Some(group) = self.map.get(id) {
let fs: Vec<_> = group let fs: Vec<_> = group
.sensors .sensors
.iter() .iter()

View File

@@ -65,7 +65,7 @@ impl<W: WidgetLike<Tag>, Tag> Eventable<W::Widget, Tag> for W {
fn id_on<E: Event<Ctx>, Ctx>( fn id_on<E: Event<Ctx>, Ctx>(
self, self,
event: E, event: E,
mut f: impl Fn(&WidgetId<W::Widget>, &mut Ctx, E::Data) + 'static, f: impl Fn(&WidgetId<W::Widget>, &mut Ctx, E::Data) + 'static,
) -> impl WidgetIdFn<W::Widget> ) -> impl WidgetIdFn<W::Widget>
where where
W::Widget: Widget, W::Widget: Widget,
@@ -79,7 +79,7 @@ impl<W: WidgetLike<Tag>, Tag> Eventable<W::Widget, Tag> for W {
fn edit_on<E: Event<Ui>>( fn edit_on<E: Event<Ui>>(
self, self,
event: E, event: E,
mut f: impl Fn(&mut W::Widget, E::Data) + 'static, f: impl Fn(&mut W::Widget, E::Data) + 'static,
) -> impl WidgetIdFn<W::Widget> ) -> impl WidgetIdFn<W::Widget>
where where
W::Widget: Widget, W::Widget: Widget,
@@ -100,7 +100,7 @@ impl<E: DefaultEvent, Ctx: 'static> Event<Ctx> for E {
pub trait EventModule<E: Event<Ctx>, Ctx>: UiModule + Default { pub trait EventModule<E: Event<Ctx>, Ctx>: UiModule + Default {
fn register(&mut self, id: Id, event: E, f: impl EventFn<Ctx, E::Data>); fn register(&mut self, id: Id, event: E, f: impl EventFn<Ctx, E::Data>);
fn run<'a>( fn run<'a>(
&mut self, &self,
id: &Id, id: &Id,
event: E, event: E,
) -> Option<impl Fn(&mut Ctx, E::Data) + use<'a, Self, E, Ctx>>; ) -> Option<impl Fn(&mut Ctx, E::Data) + use<'a, Self, E, Ctx>>;
@@ -132,12 +132,8 @@ impl<E: HashableEvent<Ctx>, Ctx: 'static> EventModule<E, Ctx> for DefaultEventMo
.push(Rc::new(f)); .push(Rc::new(f));
} }
fn run<'a>( fn run<'a>(&self, id: &Id, event: E) -> Option<impl Fn(&mut Ctx, E::Data) + use<'a, E, Ctx>> {
&mut self, if let Some(map) = self.map.get(&event)
id: &Id,
event: E,
) -> Option<impl Fn(&mut Ctx, E::Data) + use<'a, E, Ctx>> {
if let Some(map) = self.map.get_mut(&event)
&& let Some(fs) = map.get(id) && let Some(fs) = map.get(id)
{ {
let fs = fs.clone(); let fs = fs.clone();
@@ -153,31 +149,18 @@ impl<E: HashableEvent<Ctx>, Ctx: 'static> EventModule<E, Ctx> for DefaultEventMo
} }
impl<E: HashableEvent<Ctx>, Ctx: 'static> DefaultEventModule<E, Ctx> { impl<E: HashableEvent<Ctx>, Ctx: 'static> DefaultEventModule<E, Ctx> {
pub fn run_all(&mut self, ctx: &mut Ctx, event: E, data: E::Data) pub fn run_all(&self, ctx: &mut Ctx, event: E, data: E::Data)
where where
E::Data: Clone, E::Data: Clone,
{ {
if let Some(map) = self.map.get_mut(&event) { if let Some(map) = self.map.get(&event) {
for fs in map.values_mut() { for fs in map.values() {
for f in fs { for f in fs {
f(ctx, data.clone()) f(ctx, data.clone())
} }
} }
} }
} }
pub fn run<W>(&mut self, ctx: &mut Ctx, id: WidgetId<W>, event: E, data: E::Data)
where
E::Data: Clone,
{
if let Some(map) = self.map.get_mut(&event)
&& let Some(fs) = map.get_mut(&id.id)
{
for f in fs {
f(ctx, data.clone())
}
}
}
} }
impl<E: Event<Ctx> + 'static, Ctx: 'static> Default for DefaultEventModule<E, Ctx> { impl<E: Event<Ctx> + 'static, Ctx: 'static> Default for DefaultEventModule<E, Ctx> {