diff options
Diffstat (limited to 'style')
| -rw-r--r-- | style/Cargo.toml | 4 | ||||
| -rw-r--r-- | style/src/scrollable.rs | 22 | ||||
| -rw-r--r-- | style/src/slider.rs | 11 | ||||
| -rw-r--r-- | style/src/text_input.rs | 8 | ||||
| -rw-r--r-- | style/src/theme.rs | 86 | 
5 files changed, 101 insertions, 30 deletions
| diff --git a/style/Cargo.toml b/style/Cargo.toml index 3b54f1ec..0bb354e0 100644 --- a/style/Cargo.toml +++ b/style/Cargo.toml @@ -1,6 +1,6 @@  [package]  name = "iced_style" -version = "0.7.0" +version = "0.8.0"  authors = ["Héctor Ramón Jiménez <hector0193@gmail.com>"]  edition = "2021"  description = "The default set of styles of Iced" @@ -11,7 +11,7 @@ keywords = ["gui", "ui", "graphics", "interface", "widgets"]  categories = ["gui"]  [dependencies.iced_core] -version = "0.8" +version = "0.9"  path = "../core"  features = ["palette"] diff --git a/style/src/scrollable.rs b/style/src/scrollable.rs index 64ed8462..b528c444 100644 --- a/style/src/scrollable.rs +++ b/style/src/scrollable.rs @@ -37,12 +37,16 @@ pub trait StyleSheet {      /// Produces the style of an active scrollbar.      fn active(&self, style: &Self::Style) -> Scrollbar; -    /// Produces the style of a hovered scrollbar. -    fn hovered(&self, style: &Self::Style) -> Scrollbar; +    /// Produces the style of a scrollbar when the scrollable is being hovered. +    fn hovered( +        &self, +        style: &Self::Style, +        is_mouse_over_scrollbar: bool, +    ) -> Scrollbar;      /// Produces the style of a scrollbar that is being dragged.      fn dragging(&self, style: &Self::Style) -> Scrollbar { -        self.hovered(style) +        self.hovered(style, true)      }      /// Produces the style of an active horizontal scrollbar. @@ -50,13 +54,17 @@ pub trait StyleSheet {          self.active(style)      } -    /// Produces the style of a hovered horizontal scrollbar. -    fn hovered_horizontal(&self, style: &Self::Style) -> Scrollbar { -        self.hovered(style) +    /// Produces the style of a horizontal scrollbar when the scrollable is being hovered. +    fn hovered_horizontal( +        &self, +        style: &Self::Style, +        is_mouse_over_scrollbar: bool, +    ) -> Scrollbar { +        self.hovered(style, is_mouse_over_scrollbar)      }      /// Produces the style of a horizontal scrollbar that is being dragged.      fn dragging_horizontal(&self, style: &Self::Style) -> Scrollbar { -        self.hovered_horizontal(style) +        self.hovered_horizontal(style, true)      }  } diff --git a/style/src/slider.rs b/style/src/slider.rs index 4b52fad3..884d3871 100644 --- a/style/src/slider.rs +++ b/style/src/slider.rs @@ -5,11 +5,20 @@ use iced_core::Color;  #[derive(Debug, Clone, Copy)]  pub struct Appearance {      /// The colors of the rail of the slider. -    pub rail_colors: (Color, Color), +    pub rail: Rail,      /// The appearance of the [`Handle`] of the slider.      pub handle: Handle,  } +/// The appearance of a slider rail +#[derive(Debug, Clone, Copy)] +pub struct Rail { +    /// The colors of the rail of the slider. +    pub colors: (Color, Color), +    /// The width of the stroke of a slider rail. +    pub width: f32, +} +  /// The appearance of the handle of a slider.  #[derive(Debug, Clone, Copy)]  pub struct Handle { diff --git a/style/src/text_input.rs b/style/src/text_input.rs index d97016dc..2616ad5a 100644 --- a/style/src/text_input.rs +++ b/style/src/text_input.rs @@ -12,6 +12,8 @@ pub struct Appearance {      pub border_width: f32,      /// The border [`Color`] of the text input.      pub border_color: Color, +    /// The icon [`Color`] of the text input. +    pub icon_color: Color,  }  /// A set of rules that dictate the style of a text input. @@ -31,6 +33,9 @@ pub trait StyleSheet {      /// Produces the [`Color`] of the value of a text input.      fn value_color(&self, style: &Self::Style) -> Color; +    /// Produces the [`Color`] of the value of a disabled text input. +    fn disabled_color(&self, style: &Self::Style) -> Color; +      /// Produces the [`Color`] of the selection of a text input.      fn selection_color(&self, style: &Self::Style) -> Color; @@ -38,4 +43,7 @@ pub trait StyleSheet {      fn hovered(&self, style: &Self::Style) -> Appearance {          self.focused(style)      } + +    /// Produces the style of a disabled text input. +    fn disabled(&self, style: &Self::Style) -> Appearance;  } diff --git a/style/src/theme.rs b/style/src/theme.rs index b507d096..d9893bcf 100644 --- a/style/src/theme.rs +++ b/style/src/theme.rs @@ -416,10 +416,13 @@ impl slider::StyleSheet for Theme {                  };                  slider::Appearance { -                    rail_colors: ( -                        palette.primary.base.color, -                        Color::TRANSPARENT, -                    ), +                    rail: slider::Rail { +                        colors: ( +                            palette.primary.base.color, +                            palette.primary.base.color, +                        ), +                        width: 2.0, +                    },                      handle: slider::Handle {                          color: palette.background.base.color,                          border_color: palette.primary.base.color, @@ -906,31 +909,41 @@ impl scrollable::StyleSheet for Theme {          }      } -    fn hovered(&self, style: &Self::Style) -> scrollable::Scrollbar { +    fn hovered( +        &self, +        style: &Self::Style, +        is_mouse_over_scrollbar: bool, +    ) -> scrollable::Scrollbar {          match style {              Scrollable::Default => { -                let palette = self.extended_palette(); +                if is_mouse_over_scrollbar { +                    let palette = self.extended_palette(); -                scrollable::Scrollbar { -                    background: palette.background.weak.color.into(), -                    border_radius: 2.0, -                    border_width: 0.0, -                    border_color: Color::TRANSPARENT, -                    scroller: scrollable::Scroller { -                        color: palette.primary.strong.color, +                    scrollable::Scrollbar { +                        background: palette.background.weak.color.into(),                          border_radius: 2.0,                          border_width: 0.0,                          border_color: Color::TRANSPARENT, -                    }, +                        scroller: scrollable::Scroller { +                            color: palette.primary.strong.color, +                            border_radius: 2.0, +                            border_width: 0.0, +                            border_color: Color::TRANSPARENT, +                        }, +                    } +                } else { +                    self.active(style)                  }              } -            Scrollable::Custom(custom) => custom.hovered(self), +            Scrollable::Custom(custom) => { +                custom.hovered(self, is_mouse_over_scrollbar) +            }          }      }      fn dragging(&self, style: &Self::Style) -> scrollable::Scrollbar {          match style { -            Scrollable::Default => self.hovered(style), +            Scrollable::Default => self.hovered(style, true),              Scrollable::Custom(custom) => custom.dragging(self),          }      } @@ -942,10 +955,16 @@ impl scrollable::StyleSheet for Theme {          }      } -    fn hovered_horizontal(&self, style: &Self::Style) -> scrollable::Scrollbar { +    fn hovered_horizontal( +        &self, +        style: &Self::Style, +        is_mouse_over_scrollbar: bool, +    ) -> scrollable::Scrollbar {          match style { -            Scrollable::Default => self.hovered(style), -            Scrollable::Custom(custom) => custom.hovered_horizontal(self), +            Scrollable::Default => self.hovered(style, is_mouse_over_scrollbar), +            Scrollable::Custom(custom) => { +                custom.hovered_horizontal(self, is_mouse_over_scrollbar) +            }          }      } @@ -954,7 +973,7 @@ impl scrollable::StyleSheet for Theme {          style: &Self::Style,      ) -> scrollable::Scrollbar {          match style { -            Scrollable::Default => self.hovered_horizontal(style), +            Scrollable::Default => self.hovered_horizontal(style, true),              Scrollable::Custom(custom) => custom.dragging_horizontal(self),          }      } @@ -1012,6 +1031,7 @@ impl text_input::StyleSheet for Theme {              border_radius: 2.0,              border_width: 1.0,              border_color: palette.background.strong.color, +            icon_color: palette.background.weak.text,          }      } @@ -1027,6 +1047,7 @@ impl text_input::StyleSheet for Theme {              border_radius: 2.0,              border_width: 1.0,              border_color: palette.background.base.text, +            icon_color: palette.background.weak.text,          }      } @@ -1042,6 +1063,7 @@ impl text_input::StyleSheet for Theme {              border_radius: 2.0,              border_width: 1.0,              border_color: palette.primary.strong.color, +            icon_color: palette.background.weak.text,          }      } @@ -1074,4 +1096,28 @@ impl text_input::StyleSheet for Theme {          palette.primary.weak.color      } + +    fn disabled(&self, style: &Self::Style) -> text_input::Appearance { +        if let TextInput::Custom(custom) = style { +            return custom.disabled(self); +        } + +        let palette = self.extended_palette(); + +        text_input::Appearance { +            background: palette.background.weak.color.into(), +            border_radius: 2.0, +            border_width: 1.0, +            border_color: palette.background.strong.color, +            icon_color: palette.background.strong.color, +        } +    } + +    fn disabled_color(&self, style: &Self::Style) -> Color { +        if let TextInput::Custom(custom) = style { +            return custom.disabled_color(self); +        } + +        self.placeholder_color(style) +    }  } | 
