diff options
author | 2021-10-31 17:45:57 +0700 | |
---|---|---|
committer | 2021-10-31 17:45:57 +0700 | |
commit | 0d3c9ef7bd3d0a0abecdf8e8b5391e32773ca20e (patch) | |
tree | 77b8c4282e3baec2a7ac6c18eff923d296d2a11a | |
parent | 0c76e0307ff7d4450c354812f8a25047f24948b4 (diff) | |
download | iced-0d3c9ef7bd3d0a0abecdf8e8b5391e32773ca20e.tar.gz iced-0d3c9ef7bd3d0a0abecdf8e8b5391e32773ca20e.tar.bz2 iced-0d3c9ef7bd3d0a0abecdf8e8b5391e32773ca20e.zip |
Reintroduce `Box` for `style_sheet` in `TextInput`
-rw-r--r-- | examples/styling/src/main.rs | 6 | ||||
-rw-r--r-- | native/src/widget/text_input.rs | 7 | ||||
-rw-r--r-- | style/src/text_input.rs | 13 | ||||
-rw-r--r-- | web/src/widget/text_input.rs | 9 |
4 files changed, 25 insertions, 10 deletions
diff --git a/examples/styling/src/main.rs b/examples/styling/src/main.rs index b33e26de..262db03e 100644 --- a/examples/styling/src/main.rs +++ b/examples/styling/src/main.rs @@ -77,7 +77,7 @@ impl Sandbox for Styling { ) .padding(10) .size(20) - .style(self.theme.into()); + .style(self.theme); let button = Button::new(&mut self.button, Text::new("Submit")) .padding(10) @@ -194,11 +194,11 @@ mod style { } } - impl From<Theme> for &'static dyn text_input::StyleSheet { + impl<'a> From<Theme> for Box<dyn text_input::StyleSheet + 'a> { fn from(theme: Theme) -> Self { match theme { Theme::Light => Default::default(), - Theme::Dark => &dark::TextInput, + Theme::Dark => dark::TextInput.into(), } } } diff --git a/native/src/widget/text_input.rs b/native/src/widget/text_input.rs index a3641330..5be1d3d6 100644 --- a/native/src/widget/text_input.rs +++ b/native/src/widget/text_input.rs @@ -66,7 +66,7 @@ pub struct TextInput<'a, Message, Renderer: text::Renderer> { size: Option<u16>, on_change: Box<dyn Fn(String) -> Message>, on_submit: Option<Message>, - style_sheet: &'a dyn StyleSheet, + style_sheet: Box<dyn StyleSheet + 'a>, } impl<'a, Message, Renderer> TextInput<'a, Message, Renderer> @@ -152,7 +152,10 @@ where } /// Sets the style of the [`TextInput`]. - pub fn style(mut self, style_sheet: &'a dyn StyleSheet) -> Self { + pub fn style( + mut self, + style_sheet: impl Into<Box<dyn StyleSheet + 'a>>, + ) -> Self { self.style_sheet = style_sheet.into(); self } diff --git a/style/src/text_input.rs b/style/src/text_input.rs index 13b64cd5..4260af84 100644 --- a/style/src/text_input.rs +++ b/style/src/text_input.rs @@ -73,8 +73,17 @@ impl StyleSheet for Default { } } -impl std::default::Default for &'static dyn StyleSheet { +impl std::default::Default for Box<dyn StyleSheet> { fn default() -> Self { - &Default + Box::new(Default) + } +} + +impl<'a, T> From<T> for Box<dyn StyleSheet + 'a> +where + T: StyleSheet + 'a, +{ + fn from(style_sheet: T) -> Self { + Box::new(style_sheet) } } diff --git a/web/src/widget/text_input.rs b/web/src/widget/text_input.rs index 99f765bb..c5874485 100644 --- a/web/src/widget/text_input.rs +++ b/web/src/widget/text_input.rs @@ -39,7 +39,7 @@ pub struct TextInput<'a, Message> { size: Option<u16>, on_change: Rc<Box<dyn Fn(String) -> Message>>, on_submit: Option<Message>, - style_sheet: &'a dyn StyleSheet, + style_sheet: Box<dyn StyleSheet + 'a>, } impl<'a, Message> TextInput<'a, Message> { @@ -112,8 +112,11 @@ impl<'a, Message> TextInput<'a, Message> { } /// Sets the style of the [`TextInput`]. - pub fn style(mut self, style_sheet: &'a dyn StyleSheet) -> Self { - self.style_sheet = style_sheet; + pub fn style( + mut self, + style_sheet: impl Into<Box<dyn StyleSheet + 'a>>, + ) -> Self { + self.style_sheet = style_sheet.into(); self } } |