summaryrefslogtreecommitdiffstats
path: root/style/src/slider.rs
diff options
context:
space:
mode:
Diffstat (limited to 'style/src/slider.rs')
-rw-r--r--style/src/slider.rs29
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,
}