diff options
author | 2019-10-29 03:34:21 +0100 | |
---|---|---|
committer | 2019-10-29 03:34:21 +0100 | |
commit | 9dabbf78857c3a60583227d3aa2fa6e030f085d0 (patch) | |
tree | 16356590112788fcf8914b7a60fd290384d4dd4c /native | |
parent | 6602c1517cbffbc9ff0b6052ce7288cd51eb1e67 (diff) | |
download | iced-9dabbf78857c3a60583227d3aa2fa6e030f085d0.tar.gz iced-9dabbf78857c3a60583227d3aa2fa6e030f085d0.tar.bz2 iced-9dabbf78857c3a60583227d3aa2fa6e030f085d0.zip |
Provide `Renderer` to `Widget::on_event`
This allows us to implement configurable event processing that adapts to
different rendering strategies.
Diffstat (limited to 'native')
-rw-r--r-- | native/src/element.rs | 13 | ||||
-rw-r--r-- | native/src/user_interface.rs | 6 | ||||
-rw-r--r-- | native/src/widget.rs | 1 | ||||
-rw-r--r-- | native/src/widget/button.rs | 1 | ||||
-rw-r--r-- | native/src/widget/checkbox.rs | 1 | ||||
-rw-r--r-- | native/src/widget/column.rs | 11 | ||||
-rw-r--r-- | native/src/widget/radio.rs | 1 | ||||
-rw-r--r-- | native/src/widget/row.rs | 11 | ||||
-rw-r--r-- | native/src/widget/scrollable.rs | 10 | ||||
-rw-r--r-- | native/src/widget/slider.rs | 1 |
10 files changed, 43 insertions, 13 deletions
diff --git a/native/src/element.rs b/native/src/element.rs index bbedd942..c638c713 100644 --- a/native/src/element.rs +++ b/native/src/element.rs @@ -299,6 +299,7 @@ where layout: Layout<'_>, cursor_position: Point, messages: &mut Vec<B>, + renderer: &Renderer, ) { let mut original_messages = Vec::new(); @@ -307,6 +308,7 @@ where layout, cursor_position, &mut original_messages, + renderer, ); original_messages @@ -369,10 +371,15 @@ where layout: Layout<'_>, cursor_position: Point, messages: &mut Vec<Message>, + renderer: &Renderer, ) { - self.element - .widget - .on_event(event, layout, cursor_position, messages) + self.element.widget.on_event( + event, + layout, + cursor_position, + messages, + renderer, + ) } fn draw( diff --git a/native/src/user_interface.rs b/native/src/user_interface.rs index 5df0dc6a..0760dd7e 100644 --- a/native/src/user_interface.rs +++ b/native/src/user_interface.rs @@ -186,7 +186,7 @@ where /// ); /// /// // Update the user interface - /// let messages = user_interface.update(events.drain(..)); + /// let messages = user_interface.update(&renderer, events.drain(..)); /// /// cache = user_interface.into_cache(); /// @@ -198,6 +198,7 @@ where /// ``` pub fn update( &mut self, + renderer: &Renderer, events: impl Iterator<Item = Event>, ) -> Vec<Message> { let mut messages = Vec::new(); @@ -212,6 +213,7 @@ where Layout::new(&self.layout), self.cursor_position, &mut messages, + renderer, ); } @@ -281,7 +283,7 @@ where /// &mut renderer, /// ); /// - /// let messages = user_interface.update(events.drain(..)); + /// let messages = user_interface.update(&renderer, events.drain(..)); /// /// // Draw the user interface /// let mouse_cursor = user_interface.draw(&mut renderer); diff --git a/native/src/widget.rs b/native/src/widget.rs index 0d3f6d2c..c04f3377 100644 --- a/native/src/widget.rs +++ b/native/src/widget.rs @@ -117,6 +117,7 @@ where _layout: Layout<'_>, _cursor_position: Point, _messages: &mut Vec<Message>, + _renderer: &Renderer, ) { } } 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<Message>, + _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<Message>, + _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<Message>, + 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<Message>, + _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<Message>, + 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<Message>, + 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<Message>, + _renderer: &Renderer, ) { let mut change = || { let bounds = layout.bounds(); |