Implement pure::Component in iced_lazy

This commit is contained in:
Héctor Ramón Jiménez 2022-02-17 19:08:54 +07:00
parent 2737b21d34
commit da45b6c162
No known key found for this signature in database
GPG key ID: 140CC052C94F138E
13 changed files with 530 additions and 21 deletions

View file

@ -5,17 +5,17 @@ use iced_native::Layout;
pub use iced_native::overlay::*;
pub fn from_children<'a, Message, Renderer>(
children: &'a mut [crate::Element<'_, Message, Renderer>],
children: &'a [crate::Element<'_, Message, Renderer>],
tree: &'a mut Tree,
layout: Layout<'_>,
renderer: &Renderer,
) -> Option<Element<'a, Message, Renderer>> {
children
.iter_mut()
.iter()
.zip(&mut tree.children)
.zip(layout.children())
.filter_map(|((child, state), layout)| {
child.as_widget_mut().overlay(state, layout, renderer)
child.as_widget().overlay(state, layout, renderer)
})
.next()
}

View file

@ -1,4 +1,5 @@
pub mod image;
pub mod tree;
mod button;
mod checkbox;
@ -14,7 +15,6 @@ mod space;
mod text;
mod text_input;
mod toggler;
mod tree;
pub use button::Button;
pub use checkbox::Checkbox;
@ -104,7 +104,7 @@ pub trait Widget<Message, Renderer> {
}
fn overlay<'a>(
&'a mut self,
&'a self,
_state: &'a mut Tree,
_layout: Layout<'_>,
_renderer: &Renderer,

View file

@ -209,12 +209,12 @@ where
}
fn overlay<'b>(
&'b mut self,
&'b self,
tree: &'b mut Tree,
layout: Layout<'_>,
renderer: &Renderer,
) -> Option<overlay::Element<'b, Message, Renderer>> {
self.content.as_widget_mut().overlay(
self.content.as_widget().overlay(
&mut tree.children[0],
layout.children().next().unwrap(),
renderer,

View file

@ -219,12 +219,12 @@ where
}
fn overlay<'b>(
&'b mut self,
&'b self,
tree: &'b mut Tree,
layout: Layout<'_>,
renderer: &Renderer,
) -> Option<overlay::Element<'b, Message, Renderer>> {
overlay::from_children(&mut self.children, tree, layout, renderer)
overlay::from_children(&self.children, tree, layout, renderer)
}
}

View file

@ -240,12 +240,12 @@ where
}
fn overlay<'b>(
&'b mut self,
&'b self,
tree: &'b mut Tree,
layout: Layout<'_>,
renderer: &Renderer,
) -> Option<overlay::Element<'b, Message, Renderer>> {
self.content.as_widget_mut().overlay(
self.content.as_widget().overlay(
&mut tree.children[0],
layout.children().next().unwrap(),
renderer,

View file

@ -212,7 +212,7 @@ where
}
fn overlay<'b>(
&'b mut self,
&'b self,
tree: &'b mut Tree,
layout: Layout<'_>,
_renderer: &Renderer,

View file

@ -205,12 +205,12 @@ where
}
fn overlay<'b>(
&'b mut self,
&'b self,
tree: &'b mut Tree,
layout: Layout<'_>,
renderer: &Renderer,
) -> Option<overlay::Element<'b, Message, Renderer>> {
overlay::from_children(&mut self.children, tree, layout, renderer)
overlay::from_children(&self.children, tree, layout, renderer)
}
}

View file

@ -233,13 +233,13 @@ where
}
fn overlay<'b>(
&'b mut self,
&'b self,
tree: &'b mut Tree,
layout: Layout<'_>,
renderer: &Renderer,
) -> Option<overlay::Element<'b, Message, Renderer>> {
self.content
.as_widget_mut()
.as_widget()
.overlay(
&mut tree.children[0],
layout.children().next().unwrap(),

View file

@ -4,15 +4,13 @@ use iced_native::event::{self, Event};
use iced_native::layout::{self, Layout};
use iced_native::mouse;
use iced_native::renderer;
use iced_native::text;
use iced_native::{Clipboard, Hasher, Length, Point, Rectangle, Shell};
pub use iced_native::widget::Space;
impl<'a, Message, Renderer> Widget<Message, Renderer> for Space
where
Message: Clone,
Renderer: text::Renderer,
Renderer: iced_native::Renderer,
{
fn width(&self) -> Length {
<Self as iced_native::Widget<Message, Renderer>>::width(self)
@ -98,8 +96,7 @@ where
impl<'a, Message, Renderer> Into<Element<'a, Message, Renderer>> for Space
where
Message: 'a + Clone,
Renderer: text::Renderer + 'a,
Renderer: iced_native::Renderer + 'a,
{
fn into(self) -> Element<'a, Message, Renderer> {
Element::new(self)