Implement Into<Element> for &'static str in iced_virtual

This commit is contained in:
Héctor Ramón Jiménez 2022-02-10 23:16:21 +07:00
parent 5225e0e304
commit e03de01988
No known key found for this signature in database
GPG key ID: 140CC052C94F138E
5 changed files with 27 additions and 14 deletions

View file

@ -45,17 +45,10 @@ impl Sandbox for Counter {
let content = Column::new()
.padding(20)
.align_items(Alignment::Center)
.push(
Button::new(Text::new("Increment"))
.on_press(Message::IncrementPressed),
)
.push(Button::new("Increment").on_press(Message::IncrementPressed))
.push(Text::new(self.value.to_string()).size(50))
.push(
Button::new(Text::new("Decrement"))
.on_press(Message::DecrementPressed),
);
.push(Button::new("Decrement").on_press(Message::DecrementPressed));
Virtual::new(&mut self.state, iced_virtual::Element::new(content))
.into()
Virtual::new(&mut self.state, content).into()
}
}

View file

@ -21,9 +21,9 @@ where
{
pub fn new(
state: &'a mut State<Message, Renderer>,
content: Element<Message, Renderer>,
content: impl Into<Element<Message, Renderer>>,
) -> Self {
let _ = state.diff(content);
let _ = state.diff(content.into());
Self { state }
}

View file

@ -23,9 +23,9 @@ pub struct Button<Message, Renderer> {
}
impl<Message, Renderer> Button<Message, Renderer> {
pub fn new(content: impl Widget<Message, Renderer> + 'static) -> Self {
pub fn new(content: impl Into<Element<Message, Renderer>>) -> Self {
Button {
content: Element::new(content),
content: content.into(),
on_press: None,
style_sheet: Default::default(),
width: Length::Shrink,

View file

@ -207,3 +207,14 @@ where
}
}
}
impl<Message, Renderer> Into<Element<Message, Renderer>>
for Column<Message, Renderer>
where
Message: 'static,
Renderer: iced_native::Renderer + 'static,
{
fn into(self) -> Element<Message, Renderer> {
Element::new(self)
}
}

View file

@ -174,3 +174,12 @@ where
Element::new(self)
}
}
impl<Message, Renderer> Into<Element<Message, Renderer>> for &'static str
where
Renderer: text::Renderer + 'static,
{
fn into(self) -> Element<Message, Renderer> {
Text::new(self).into()
}
}