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 '')
| -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();  | 
