From 9dabbf78857c3a60583227d3aa2fa6e030f085d0 Mon Sep 17 00:00:00 2001 From: Héctor Ramón Jiménez Date: Tue, 29 Oct 2019 03:34:21 +0100 Subject: Provide `Renderer` to `Widget::on_event` This allows us to implement configurable event processing that adapts to different rendering strategies. --- native/src/widget/button.rs | 1 + native/src/widget/checkbox.rs | 1 + native/src/widget/column.rs | 11 ++++++++--- native/src/widget/radio.rs | 1 + native/src/widget/row.rs | 11 ++++++++--- native/src/widget/scrollable.rs | 10 ++++++++-- native/src/widget/slider.rs | 1 + 7 files changed, 28 insertions(+), 8 deletions(-) (limited to 'native/src/widget') diff --git a/native/src/widget/button.rs b/native/src/widget/button.rs index 4ab59f7f..cf5dba93 100644 --- a/native/src/widget/button.rs +++ b/native/src/widget/button.rs @@ -31,6 +31,7 @@ where layout: Layout<'_>, cursor_position: Point, messages: &mut Vec, + _renderer: &Renderer, ) { match event { Event::Mouse(mouse::Event::Input { diff --git a/native/src/widget/checkbox.rs b/native/src/widget/checkbox.rs index 5393417e..b8053238 100644 --- a/native/src/widget/checkbox.rs +++ b/native/src/widget/checkbox.rs @@ -20,6 +20,7 @@ where layout: Layout<'_>, cursor_position: Point, messages: &mut Vec, + _renderer: &Renderer, ) { match event { Event::Mouse(mouse::Event::Input { diff --git a/native/src/widget/column.rs b/native/src/widget/column.rs index 7995cf5d..086d05ef 100644 --- a/native/src/widget/column.rs +++ b/native/src/widget/column.rs @@ -55,12 +55,17 @@ where layout: Layout<'_>, cursor_position: Point, messages: &mut Vec, + renderer: &Renderer, ) { self.children.iter_mut().zip(layout.children()).for_each( |(child, layout)| { - child - .widget - .on_event(event, layout, cursor_position, messages) + child.widget.on_event( + event, + layout, + cursor_position, + messages, + renderer, + ) }, ); } diff --git a/native/src/widget/radio.rs b/native/src/widget/radio.rs index 27b8f8a8..93ec4a36 100644 --- a/native/src/widget/radio.rs +++ b/native/src/widget/radio.rs @@ -21,6 +21,7 @@ where layout: Layout<'_>, cursor_position: Point, messages: &mut Vec, + _renderer: &Renderer, ) { match event { Event::Mouse(mouse::Event::Input { diff --git a/native/src/widget/row.rs b/native/src/widget/row.rs index 5ec27159..7dbfb92a 100644 --- a/native/src/widget/row.rs +++ b/native/src/widget/row.rs @@ -55,12 +55,17 @@ where layout: Layout<'_>, cursor_position: Point, messages: &mut Vec, + renderer: &Renderer, ) { self.children.iter_mut().zip(layout.children()).for_each( |(child, layout)| { - child - .widget - .on_event(event, layout, cursor_position, messages) + child.widget.on_event( + event, + layout, + cursor_position, + messages, + renderer, + ) }, ); } diff --git a/native/src/widget/scrollable.rs b/native/src/widget/scrollable.rs index 9acba3c2..e52f3c3f 100644 --- a/native/src/widget/scrollable.rs +++ b/native/src/widget/scrollable.rs @@ -46,6 +46,7 @@ where layout: Layout<'_>, cursor_position: Point, messages: &mut Vec, + renderer: &Renderer, ) { let bounds = layout.bounds(); let is_mouse_over = bounds.contains(cursor_position); @@ -78,8 +79,13 @@ where Point::new(cursor_position.x, -1.0) }; - self.content - .on_event(event, content, cursor_position, messages) + self.content.on_event( + event, + content, + cursor_position, + messages, + renderer, + ) } fn draw( diff --git a/native/src/widget/slider.rs b/native/src/widget/slider.rs index d643d902..be2b9b22 100644 --- a/native/src/widget/slider.rs +++ b/native/src/widget/slider.rs @@ -25,6 +25,7 @@ where layout: Layout<'_>, cursor_position: Point, messages: &mut Vec, + _renderer: &Renderer, ) { let mut change = || { let bounds = layout.bounds(); -- cgit