diff options
author | 2021-10-20 15:50:42 +0700 | |
---|---|---|
committer | 2021-10-20 15:50:42 +0700 | |
commit | 11bcb1342796a6fabc7c5b89a15c22c754b014ce (patch) | |
tree | d55c147d35d422b219bd813ec71d49bb09833951 /native/src/widget/slider.rs | |
parent | e00a2e9b2d97147be5912a97362d1bf1705b7c4e (diff) | |
download | iced-11bcb1342796a6fabc7c5b89a15c22c754b014ce.tar.gz iced-11bcb1342796a6fabc7c5b89a15c22c754b014ce.tar.bz2 iced-11bcb1342796a6fabc7c5b89a15c22c754b014ce.zip |
Wire up styling to `Slider` in `iced_native`
Diffstat (limited to 'native/src/widget/slider.rs')
-rw-r--r-- | native/src/widget/slider.rs | 48 |
1 files changed, 17 insertions, 31 deletions
diff --git a/native/src/widget/slider.rs b/native/src/widget/slider.rs index 7bdb72af..24b6bf6d 100644 --- a/native/src/widget/slider.rs +++ b/native/src/widget/slider.rs @@ -13,6 +13,8 @@ use crate::{ use std::hash::Hash; use std::ops::RangeInclusive; +pub use iced_style::slider::{Handle, HandleShape, Style, StyleSheet}; + /// An horizontal bar and a handle that selects a single value from a range of /// values. /// @@ -23,9 +25,8 @@ use std::ops::RangeInclusive; /// /// # Example /// ``` -/// # use iced_native::{slider, renderer::Null}; +/// # use iced_native::slider::{self, Slider}; /// # -/// # pub type Slider<'a, T, Message> = iced_native::Slider<'a, T, Message, Null>; /// #[derive(Clone)] /// pub enum Message { /// SliderChanged(f32), @@ -39,7 +40,7 @@ use std::ops::RangeInclusive; /// ///  #[allow(missing_debug_implementations)] -pub struct Slider<'a, T, Message, Renderer: self::Renderer> { +pub struct Slider<'a, T, Message> { state: &'a mut State, range: RangeInclusive<T>, step: T, @@ -48,15 +49,16 @@ pub struct Slider<'a, T, Message, Renderer: self::Renderer> { on_release: Option<Message>, width: Length, height: u16, - style: Renderer::Style, + style_sheet: &'a dyn StyleSheet, } -impl<'a, T, Message, Renderer> Slider<'a, T, Message, Renderer> +impl<'a, T, Message> Slider<'a, T, Message> where T: Copy + From<u8> + std::cmp::PartialOrd, Message: Clone, - Renderer: self::Renderer, { + pub const DEFAULT_HEIGHT: u16 = 22; + /// Creates a new [`Slider`]. /// /// It expects: @@ -95,8 +97,8 @@ where on_change: Box::new(on_change), on_release: None, width: Length::Fill, - height: Renderer::DEFAULT_HEIGHT, - style: Renderer::Style::default(), + height: Self::DEFAULT_HEIGHT, + style_sheet: Default::default(), } } @@ -124,8 +126,8 @@ where } /// Sets the style of the [`Slider`]. - pub fn style(mut self, style: impl Into<Renderer::Style>) -> Self { - self.style = style.into(); + pub fn style(mut self, style_sheet: &'a dyn StyleSheet) -> Self { + self.style_sheet = style_sheet; self } @@ -150,11 +152,11 @@ impl State { } impl<'a, T, Message, Renderer> Widget<Message, Renderer> - for Slider<'a, T, Message, Renderer> + for Slider<'a, T, Message> where T: Copy + Into<f64> + num_traits::FromPrimitive, Message: Clone, - Renderer: self::Renderer, + Renderer: crate::Renderer, { fn width(&self) -> Length { self.width @@ -275,30 +277,14 @@ where } } -/// The renderer of a [`Slider`]. -/// -/// Your [renderer] will need to implement this trait before being -/// able to use a [`Slider`] in your user interface. -/// -/// [renderer]: crate::renderer -pub trait Renderer: crate::Renderer { - /// The style supported by this renderer. - type Style: Default; - - /// The default height of a [`Slider`]. - const DEFAULT_HEIGHT: u16; -} - -impl<'a, T, Message, Renderer> From<Slider<'a, T, Message, Renderer>> +impl<'a, T, Message, Renderer> From<Slider<'a, T, Message>> for Element<'a, Message, Renderer> where T: 'a + Copy + Into<f64> + num_traits::FromPrimitive, Message: 'a + Clone, - Renderer: 'a + self::Renderer, + Renderer: 'a + crate::Renderer, { - fn from( - slider: Slider<'a, T, Message, Renderer>, - ) -> Element<'a, Message, Renderer> { + fn from(slider: Slider<'a, T, Message>) -> Element<'a, Message, Renderer> { Element::new(slider) } } |