summaryrefslogtreecommitdiffstats
path: root/native
diff options
context:
space:
mode:
authorLibravatar Héctor Ramón Jiménez <hector0193@gmail.com>2019-10-29 03:34:21 +0100
committerLibravatar Héctor Ramón Jiménez <hector0193@gmail.com>2019-10-29 03:34:21 +0100
commit9dabbf78857c3a60583227d3aa2fa6e030f085d0 (patch)
tree16356590112788fcf8914b7a60fd290384d4dd4c /native
parent6602c1517cbffbc9ff0b6052ce7288cd51eb1e67 (diff)
downloadiced-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.rs13
-rw-r--r--native/src/user_interface.rs6
-rw-r--r--native/src/widget.rs1
-rw-r--r--native/src/widget/button.rs1
-rw-r--r--native/src/widget/checkbox.rs1
-rw-r--r--native/src/widget/column.rs11
-rw-r--r--native/src/widget/radio.rs1
-rw-r--r--native/src/widget/row.rs11
-rw-r--r--native/src/widget/scrollable.rs10
-rw-r--r--native/src/widget/slider.rs1
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();