diff --git a/src/views/stack.rs b/src/views/stack.rs index b2679634..c08f5296 100644 --- a/src/views/stack.rs +++ b/src/views/stack.rs @@ -65,13 +65,7 @@ impl View for Stack { } fn process(&self, event: &Event, id: ViewId, cx: &mut Context, vger: &mut Vger) { - let mut c = 0; - self.children.foreach_view(&mut |child| { - let child_id = id.child(&c); - let offset = cx.layout.entry(child_id).or_default().offset; - (*child).process(&event.offset(-offset), child_id, cx, vger); - c += 1; - }) + self.children.process(event, id, cx, vger); } fn draw(&self, id: ViewId, cx: &mut Context, vger: &mut Vger) { diff --git a/src/viewtuple.rs b/src/viewtuple.rs index b1018bf2..7cd626ff 100644 --- a/src/viewtuple.rs +++ b/src/viewtuple.rs @@ -8,6 +8,7 @@ pub trait ViewTuple { false } // satisfy clippy + fn process(&self, event: &Event, id: ViewId, cx: &mut Context, vger: &mut Vger); fn draw(&self, id: ViewId, cx: &mut Context, vger: &mut Vger); } @@ -22,6 +23,14 @@ macro_rules! impl_view_tuple { $n } + fn process(&self, event: &Event, id: ViewId, cx: &mut Context, vger: &mut Vger) { + $({ + let child_id = id.child(&$s); + let offset = cx.layout.entry(child_id).or_default().offset; + self.$s.process(&event.offset(-offset), child_id, cx, vger); + })* + } + fn draw(&self, id: ViewId, cx: &mut Context, vger: &mut Vger) { $({ let child_id = id.child(&$s);