summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLibravatar Ian Douglas Scott <idscott@system76.com>2023-04-27 15:36:45 -0700
committerLibravatar Ian Douglas Scott <idscott@system76.com>2023-04-28 10:14:15 -0700
commit47016a37dfe51ebc3cdf290d8afb34ceadb8edae (patch)
tree79dfb92903f27f2f743f4c3bcf49cf9956cab8cd
parentc31ab8eee6a49a48b4e6ad92207b8ee0360a0eff (diff)
downloadiced-47016a37dfe51ebc3cdf290d8afb34ceadb8edae.tar.gz
iced-47016a37dfe51ebc3cdf290d8afb34ceadb8edae.tar.bz2
iced-47016a37dfe51ebc3cdf290d8afb34ceadb8edae.zip
Do not require `Copy` for text `StyleSheet::Style`
For most widgets, `Style` only requires `Default`. A few require `Clone`. Only this one requires `Copy`. Some of the types in the default theme has a custom variant requiring `Box<dyn Trait>`, or `Rc<dyn Trait>` to provide `Clone`, but this isn't possible if `Copy` is required. It would be good to also address the inconsistency of requiring `Clone` in some places and not others. This removes `style/src/text.rs` which is unused in this branch and thus confusing. If there's a reason to keep it, that can be removed from the change.
-rw-r--r--core/src/widget/text.rs6
-rw-r--r--style/src/text.rs20
2 files changed, 3 insertions, 23 deletions
diff --git a/core/src/widget/text.rs b/core/src/widget/text.rs
index 485bb542..3193ba84 100644
--- a/core/src/widget/text.rs
+++ b/core/src/widget/text.rs
@@ -153,7 +153,7 @@ where
&self.content,
self.size,
self.font,
- theme.appearance(self.style),
+ theme.appearance(self.style.clone()),
self.horizontal_alignment,
self.vertical_alignment,
);
@@ -233,7 +233,7 @@ where
horizontal_alignment: self.horizontal_alignment,
vertical_alignment: self.vertical_alignment,
font: self.font,
- style: self.style,
+ style: self.style.clone(),
}
}
}
@@ -261,7 +261,7 @@ where
/// The style sheet of some text.
pub trait StyleSheet {
/// The supported style of the [`StyleSheet`].
- type Style: Default + Copy;
+ type Style: Default + Clone;
/// Produces the [`Appearance`] of some text.
fn appearance(&self, style: Self::Style) -> Appearance;
diff --git a/style/src/text.rs b/style/src/text.rs
deleted file mode 100644
index d5a16bef..00000000
--- a/style/src/text.rs
+++ /dev/null
@@ -1,20 +0,0 @@
-//! Change the appearance of text.
-use crate::core::Color;
-
-/// The style sheet of some text.
-pub trait StyleSheet {
- /// The supported style of the [`StyleSheet`].
- type Style: Default + Copy;
-
- /// Produces the [`Appearance`] of some text.
- fn appearance(&self, style: Self::Style) -> Appearance;
-}
-
-/// The apperance of some text.
-#[derive(Debug, Clone, Copy, Default)]
-pub struct Appearance {
- /// The [`Color`] of the text.
- ///
- /// The default, `None`, means using the inherited color.
- pub color: Option<Color>,
-}