summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLibravatar Héctor Ramón Jiménez <hector0193@gmail.com>2021-10-31 17:45:57 +0700
committerLibravatar Héctor Ramón Jiménez <hector0193@gmail.com>2021-10-31 17:45:57 +0700
commit0d3c9ef7bd3d0a0abecdf8e8b5391e32773ca20e (patch)
tree77b8c4282e3baec2a7ac6c18eff923d296d2a11a
parent0c76e0307ff7d4450c354812f8a25047f24948b4 (diff)
downloadiced-0d3c9ef7bd3d0a0abecdf8e8b5391e32773ca20e.tar.gz
iced-0d3c9ef7bd3d0a0abecdf8e8b5391e32773ca20e.tar.bz2
iced-0d3c9ef7bd3d0a0abecdf8e8b5391e32773ca20e.zip
Reintroduce `Box` for `style_sheet` in `TextInput`
-rw-r--r--examples/styling/src/main.rs6
-rw-r--r--native/src/widget/text_input.rs7
-rw-r--r--style/src/text_input.rs13
-rw-r--r--web/src/widget/text_input.rs9
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
}
}