summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLibravatar Héctor Ramón <hector0193@gmail.com>2022-03-29 18:41:02 +0700
committerLibravatar GitHub <noreply@github.com>2022-03-29 18:41:02 +0700
commit13a2997debef25570e8c14a52456aec1e7425ec6 (patch)
tree7c9a921a8a3618f27a36981442e5ad7f19b511d3
parentf6700000a28066c9cb284c68b3d93a3eef41b4f6 (diff)
parentd9d6dff550a917d2b73c7ebf96cab2c1472e3243 (diff)
downloadiced-13a2997debef25570e8c14a52456aec1e7425ec6.tar.gz
iced-13a2997debef25570e8c14a52456aec1e7425ec6.tar.bz2
iced-13a2997debef25570e8c14a52456aec1e7425ec6.zip
Merge pull request #1294 from marienz/pure-overlay
Forward overlay() calls in iced_pure::element::Map
-rw-r--r--native/src/overlay/element.rs2
-rw-r--r--native/src/widget/scrollable.rs6
-rw-r--r--pure/src/element.rs14
-rw-r--r--pure/src/lib.rs4
-rw-r--r--pure/src/widget/button.rs8
-rw-r--r--pure/src/widget/column.rs4
-rw-r--r--pure/src/widget/pick_list.rs4
-rw-r--r--pure/src/widget/row.rs4
-rw-r--r--pure/src/widget/scrollable.rs4
-rw-r--r--pure/src/widget/text.rs4
10 files changed, 34 insertions, 20 deletions
diff --git a/native/src/overlay/element.rs b/native/src/overlay/element.rs
index b60881e3..24c0fe01 100644
--- a/native/src/overlay/element.rs
+++ b/native/src/overlay/element.rs
@@ -41,7 +41,7 @@ where
where
Message: 'a,
Renderer: 'a,
- B: 'static,
+ B: 'a,
{
Element {
position: self.position,
diff --git a/native/src/widget/scrollable.rs b/native/src/widget/scrollable.rs
index 748fd27d..8958f6da 100644
--- a/native/src/widget/scrollable.rs
+++ b/native/src/widget/scrollable.rs
@@ -33,7 +33,7 @@ pub struct Scrollable<'a, Message, Renderer> {
scrollbar_margin: u16,
scroller_width: u16,
content: Column<'a, Message, Renderer>,
- on_scroll: Option<Box<dyn Fn(f32) -> Message>>,
+ on_scroll: Option<Box<dyn Fn(f32) -> Message + 'a>>,
style_sheet: Box<dyn StyleSheet + 'a>,
}
@@ -181,7 +181,7 @@ pub fn update<Message>(
scrollbar_width: u16,
scrollbar_margin: u16,
scroller_width: u16,
- on_scroll: &Option<Box<dyn Fn(f32) -> Message>>,
+ on_scroll: &Option<Box<dyn Fn(f32) -> Message + '_>>,
update_content: impl FnOnce(
Event,
Layout<'_>,
@@ -597,7 +597,7 @@ fn scrollbar(
fn notify_on_scroll<Message>(
state: &State,
- on_scroll: &Option<Box<dyn Fn(f32) -> Message>>,
+ on_scroll: &Option<Box<dyn Fn(f32) -> Message + '_>>,
bounds: Rectangle,
content_bounds: Rectangle,
shell: &mut Shell<'_, Message>,
diff --git a/pure/src/element.rs b/pure/src/element.rs
index 3d5697fe..08096103 100644
--- a/pure/src/element.rs
+++ b/pure/src/element.rs
@@ -1,3 +1,4 @@
+use crate::overlay;
use crate::widget::tree::{self, Tree};
use crate::widget::Widget;
@@ -160,4 +161,17 @@ where
renderer,
)
}
+
+ fn overlay<'b>(
+ &'b self,
+ tree: &'b mut Tree,
+ layout: Layout<'_>,
+ renderer: &Renderer,
+ ) -> Option<overlay::Element<'b, B, Renderer>> {
+ let mapper = &self.mapper;
+
+ self.widget
+ .overlay(tree, layout, renderer)
+ .map(move |overlay| overlay.map(mapper))
+ }
}
diff --git a/pure/src/lib.rs b/pure/src/lib.rs
index ec2f29f8..71d20a4d 100644
--- a/pure/src/lib.rs
+++ b/pure/src/lib.rs
@@ -23,8 +23,8 @@ pub struct Pure<'a, Message, Renderer> {
impl<'a, Message, Renderer> Pure<'a, Message, Renderer>
where
- Message: 'static,
- Renderer: iced_native::Renderer + 'static,
+ Message: 'a,
+ Renderer: iced_native::Renderer + 'a,
{
pub fn new(
state: &'a mut State,
diff --git a/pure/src/widget/button.rs b/pure/src/widget/button.rs
index f99d3018..e083ea73 100644
--- a/pure/src/widget/button.rs
+++ b/pure/src/widget/button.rs
@@ -75,8 +75,8 @@ impl<'a, Message, Renderer> Button<'a, Message, Renderer> {
impl<'a, Message, Renderer> Widget<Message, Renderer>
for Button<'a, Message, Renderer>
where
- Message: 'static + Clone,
- Renderer: 'static + iced_native::Renderer,
+ Message: 'a + Clone,
+ Renderer: 'a + iced_native::Renderer,
{
fn tag(&self) -> tree::Tag {
tree::Tag::of::<State>()
@@ -216,8 +216,8 @@ where
impl<'a, Message, Renderer> Into<Element<'a, Message, Renderer>>
for Button<'a, Message, Renderer>
where
- Message: Clone + 'static,
- Renderer: iced_native::Renderer + 'static,
+ Message: Clone + 'a,
+ Renderer: iced_native::Renderer + 'a,
{
fn into(self) -> Element<'a, Message, Renderer> {
Element::new(self)
diff --git a/pure/src/widget/column.rs b/pure/src/widget/column.rs
index 6b447270..a4c0987b 100644
--- a/pure/src/widget/column.rs
+++ b/pure/src/widget/column.rs
@@ -216,8 +216,8 @@ where
impl<'a, Message, Renderer> Into<Element<'a, Message, Renderer>>
for Column<'a, Message, Renderer>
where
- Message: 'static,
- Renderer: iced_native::Renderer + 'static,
+ Message: 'a,
+ Renderer: iced_native::Renderer + 'a,
{
fn into(self) -> Element<'a, Message, Renderer> {
Element::new(self)
diff --git a/pure/src/widget/pick_list.rs b/pure/src/widget/pick_list.rs
index 9573f27a..45bb289e 100644
--- a/pure/src/widget/pick_list.rs
+++ b/pure/src/widget/pick_list.rs
@@ -109,7 +109,7 @@ impl<'a, T: 'a, Message, Renderer> Widget<Message, Renderer>
where
T: Clone + ToString + Eq + 'static,
[T]: ToOwned<Owned = Vec<T>>,
- Message: 'static,
+ Message: 'a,
Renderer: text::Renderer + 'a,
{
fn tag(&self) -> tree::Tag {
@@ -226,7 +226,7 @@ where
T: Clone + ToString + Eq + 'static,
[T]: ToOwned<Owned = Vec<T>>,
Renderer: text::Renderer + 'a,
- Message: 'static,
+ Message: 'a,
{
fn into(self) -> Element<'a, Message, Renderer> {
Element::new(self)
diff --git a/pure/src/widget/row.rs b/pure/src/widget/row.rs
index d7f90540..92812d27 100644
--- a/pure/src/widget/row.rs
+++ b/pure/src/widget/row.rs
@@ -203,8 +203,8 @@ where
impl<'a, Message, Renderer> Into<Element<'a, Message, Renderer>>
for Row<'a, Message, Renderer>
where
- Message: 'static,
- Renderer: iced_native::Renderer + 'static,
+ Message: 'a,
+ Renderer: iced_native::Renderer + 'a,
{
fn into(self) -> Element<'a, Message, Renderer> {
Element::new(self)
diff --git a/pure/src/widget/scrollable.rs b/pure/src/widget/scrollable.rs
index f9a51200..24263c95 100644
--- a/pure/src/widget/scrollable.rs
+++ b/pure/src/widget/scrollable.rs
@@ -19,7 +19,7 @@ pub struct Scrollable<'a, Message, Renderer> {
scrollbar_width: u16,
scrollbar_margin: u16,
scroller_width: u16,
- on_scroll: Option<Box<dyn Fn(f32) -> Message>>,
+ on_scroll: Option<Box<dyn Fn(f32) -> Message + 'a>>,
style_sheet: Box<dyn StyleSheet + 'a>,
content: Element<'a, Message, Renderer>,
}
@@ -71,7 +71,7 @@ impl<'a, Message, Renderer: iced_native::Renderer>
///
/// The function takes the new relative offset of the [`Scrollable`]
/// (e.g. `0` means top, while `1` means bottom).
- pub fn on_scroll(mut self, f: impl Fn(f32) -> Message + 'static) -> Self {
+ pub fn on_scroll(mut self, f: impl Fn(f32) -> Message + 'a) -> Self {
self.on_scroll = Some(Box::new(f));
self
}
diff --git a/pure/src/widget/text.rs b/pure/src/widget/text.rs
index b78d4117..58a939c1 100644
--- a/pure/src/widget/text.rs
+++ b/pure/src/widget/text.rs
@@ -53,7 +53,7 @@ where
impl<'a, Message, Renderer> Into<Element<'a, Message, Renderer>>
for Text<Renderer>
where
- Renderer: text::Renderer + 'static,
+ Renderer: text::Renderer + 'a,
{
fn into(self) -> Element<'a, Message, Renderer> {
Element::new(self)
@@ -62,7 +62,7 @@ where
impl<'a, Message, Renderer> Into<Element<'a, Message, Renderer>> for &'a str
where
- Renderer: text::Renderer + 'static,
+ Renderer: text::Renderer + 'a,
{
fn into(self) -> Element<'a, Message, Renderer> {
Text::new(self).into()