diff options
author | 2024-03-04 03:57:03 +0100 | |
---|---|---|
committer | 2024-03-04 03:57:03 +0100 | |
commit | ce309db37b8eb9860ae1f1be1710fb39e7a9edea (patch) | |
tree | a28ef6659f6235ec7bc2a7403cfef467a71fb2bf /style/src/slider.rs | |
parent | 1bb5a1b9a23e1c4739430ac87ca33b06c2f4d9df (diff) | |
download | iced-ce309db37b8eb9860ae1f1be1710fb39e7a9edea.tar.gz iced-ce309db37b8eb9860ae1f1be1710fb39e7a9edea.tar.bz2 iced-ce309db37b8eb9860ae1f1be1710fb39e7a9edea.zip |
Try new approach to theming for `Slider`
Diffstat (limited to '')
-rw-r--r-- | style/src/slider.rs | 29 |
1 files changed, 18 insertions, 11 deletions
diff --git a/style/src/slider.rs b/style/src/slider.rs index bf1c7329..0c19e47d 100644 --- a/style/src/slider.rs +++ b/style/src/slider.rs @@ -1,6 +1,6 @@ //! Change the apperance of a slider. use crate::core::border; -use crate::core::Color; +use crate::core::{Color, Pixels}; /// The appearance of a slider. #[derive(Debug, Clone, Copy)] @@ -11,6 +11,17 @@ pub struct Appearance { pub handle: Handle, } +impl Appearance { + /// Changes the [`HandleShape`] of the [`Appearance`] to a circle + /// with the given radius. + pub fn with_circular_handle(mut self, radius: impl Into<Pixels>) -> Self { + self.handle.shape = HandleShape::Circle { + radius: radius.into().0, + }; + self + } +} + /// The appearance of a slider rail #[derive(Debug, Clone, Copy)] pub struct Rail { @@ -54,15 +65,11 @@ pub enum HandleShape { /// A set of rules that dictate the style of a slider. pub trait StyleSheet { - /// The supported style of the [`StyleSheet`]. - type Style: Default; - - /// Produces the style of an active slider. - fn active(&self, style: &Self::Style) -> Appearance; - - /// Produces the style of an hovered slider. - fn hovered(&self, style: &Self::Style) -> Appearance; + fn default() -> fn(&Self, Status) -> Appearance; +} - /// Produces the style of a slider that is being dragged. - fn dragging(&self, style: &Self::Style) -> Appearance; +pub enum Status { + Active, + Hovered, + Dragging, } |