Skip to content

Commit

Permalink
Merge pull request #1294 from marienz/pure-overlay
Browse files Browse the repository at this point in the history
Forward overlay() calls in iced_pure::element::Map
  • Loading branch information
hecrj authored Mar 29, 2022
2 parents f670000 + d9d6dff commit 13a2997
Show file tree
Hide file tree
Showing 10 changed files with 34 additions and 20 deletions.
2 changes: 1 addition & 1 deletion native/src/overlay/element.rs
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@ where
where
Message: 'a,
Renderer: 'a,
B: 'static,
B: 'a,
{
Element {
position: self.position,
Expand Down
6 changes: 3 additions & 3 deletions native/src/widget/scrollable.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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>,
}

Expand Down Expand Up @@ -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<'_>,
Expand Down Expand Up @@ -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>,
Expand Down
14 changes: 14 additions & 0 deletions pure/src/element.rs
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
use crate::overlay;
use crate::widget::tree::{self, Tree};
use crate::widget::Widget;

Expand Down Expand Up @@ -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))
}
}
4 changes: 2 additions & 2 deletions pure/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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,
Expand Down
8 changes: 4 additions & 4 deletions pure/src/widget/button.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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>()
Expand Down Expand Up @@ -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)
Expand Down
4 changes: 2 additions & 2 deletions pure/src/widget/column.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand Down
4 changes: 2 additions & 2 deletions pure/src/widget/pick_list.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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 {
Expand Down Expand Up @@ -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)
Expand Down
4 changes: 2 additions & 2 deletions pure/src/widget/row.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand Down
4 changes: 2 additions & 2 deletions pure/src/widget/scrollable.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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>,
}
Expand Down Expand Up @@ -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
}
Expand Down
4 changes: 2 additions & 2 deletions pure/src/widget/text.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand All @@ -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()
Expand Down

0 comments on commit 13a2997

Please sign in to comment.