diff --git a/src/core/sense.rs b/src/core/sense.rs index 455b42f..7a7ed95 100644 --- a/src/core/sense.rs +++ b/src/core/sense.rs @@ -264,13 +264,9 @@ impl>::Data> + Into, Ctx: 'st }); } - fn run<'a>( - &mut self, - id: &Id, - event: E, - ) -> Option> { + fn run<'a>(&self, id: &Id, event: E) -> Option> { 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 .sensors .iter() diff --git a/src/layout/event.rs b/src/layout/event.rs index ad043f7..64a88af 100644 --- a/src/layout/event.rs +++ b/src/layout/event.rs @@ -65,7 +65,7 @@ impl, Tag> Eventable for W { fn id_on, Ctx>( self, event: E, - mut f: impl Fn(&WidgetId, &mut Ctx, E::Data) + 'static, + f: impl Fn(&WidgetId, &mut Ctx, E::Data) + 'static, ) -> impl WidgetIdFn where W::Widget: Widget, @@ -79,7 +79,7 @@ impl, Tag> Eventable for W { fn edit_on>( self, event: E, - mut f: impl Fn(&mut W::Widget, E::Data) + 'static, + f: impl Fn(&mut W::Widget, E::Data) + 'static, ) -> impl WidgetIdFn where W::Widget: Widget, @@ -100,7 +100,7 @@ impl Event for E { pub trait EventModule, Ctx>: UiModule + Default { fn register(&mut self, id: Id, event: E, f: impl EventFn); fn run<'a>( - &mut self, + &self, id: &Id, event: E, ) -> Option>; @@ -132,12 +132,8 @@ impl, Ctx: 'static> EventModule for DefaultEventMo .push(Rc::new(f)); } - fn run<'a>( - &mut self, - id: &Id, - event: E, - ) -> Option> { - if let Some(map) = self.map.get_mut(&event) + fn run<'a>(&self, id: &Id, event: E) -> Option> { + if let Some(map) = self.map.get(&event) && let Some(fs) = map.get(id) { let fs = fs.clone(); @@ -153,31 +149,18 @@ impl, Ctx: 'static> EventModule for DefaultEventMo } impl, Ctx: 'static> DefaultEventModule { - 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 E::Data: Clone, { - if let Some(map) = self.map.get_mut(&event) { - for fs in map.values_mut() { + if let Some(map) = self.map.get(&event) { + for fs in map.values() { for f in fs { f(ctx, data.clone()) } } } } - - pub fn run(&mut self, ctx: &mut Ctx, id: WidgetId, 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 + 'static, Ctx: 'static> Default for DefaultEventModule {