diff options
Diffstat (limited to '')
| -rw-r--r-- | style/src/scrollable.rs | 32 | ||||
| -rw-r--r-- | style/src/theme.rs | 63 | 
2 files changed, 46 insertions, 49 deletions
| diff --git a/style/src/scrollable.rs b/style/src/scrollable.rs index f3c04235..64a91b69 100644 --- a/style/src/scrollable.rs +++ b/style/src/scrollable.rs @@ -37,17 +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_scrollbar(&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_scrollbar(style) -    } - -    /// Produces the style of a scrollbar when mouse is over the scrollable area. -    fn hovered(&self, style: &Self::Style) -> Scrollbar { -        self.active(style) +        self.hovered(style, true)      }      /// Produces the style of an active horizontal scrollbar. @@ -55,18 +54,17 @@ pub trait StyleSheet {          self.active(style)      } -    /// Produces the style of a hovered horizontal scrollbar. -    fn hovered_scrollbar_horizontal(&self, style: &Self::Style) -> Scrollbar { -        self.hovered_scrollbar(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_scrollbar_horizontal(style) -    } - -    /// Produces the style of a horizontal scrollbar when mouse is over the scrollable area. -    fn hovered_horizontal(&self, style: &Self::Style) -> Scrollbar { -        self.active_horizontal(style) +        self.hovered(style, true)      }  } diff --git a/style/src/theme.rs b/style/src/theme.rs index 9a3105b5..0ebd82a4 100644 --- a/style/src/theme.rs +++ b/style/src/theme.rs @@ -906,42 +906,45 @@ impl scrollable::StyleSheet for Theme {          }      } -    fn hovered_scrollbar(&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_scrollbar(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_scrollbar(style), +            Scrollable::Default => self.hovered(style, true),              Scrollable::Custom(custom) => custom.dragging(self),          }      } -    fn hovered(&self, style: &Self::Style) -> scrollable::Scrollbar { -        match style { -            Scrollable::Default => self.active(style), -            Scrollable::Custom(custom) => custom.hovered(self), -        } -    } -      fn active_horizontal(&self, style: &Self::Style) -> scrollable::Scrollbar {          match style {              Scrollable::Default => self.active(style), @@ -949,30 +952,26 @@ impl scrollable::StyleSheet for Theme {          }      } -    fn hovered_scrollbar_horizontal(&self, style: &Self::Style) -> scrollable::Scrollbar { -        match style { -            Scrollable::Default => self.hovered_scrollbar(style), -            Scrollable::Custom(custom) => custom.hovered_scrollbar_horizontal(self), -        } -    } - -    fn dragging_horizontal( +    fn hovered_horizontal(          &self,          style: &Self::Style, +        is_mouse_over_scrollbar: bool,      ) -> scrollable::Scrollbar {          match style { -            Scrollable::Default => self.hovered_horizontal(style), -            Scrollable::Custom(custom) => custom.dragging_horizontal(self), +            Scrollable::Default => self.hovered(style, is_mouse_over_scrollbar), +            Scrollable::Custom(custom) => { +                custom.hovered_horizontal(self, is_mouse_over_scrollbar) +            }          }      } -    fn hovered_horizontal( +    fn dragging_horizontal(          &self,          style: &Self::Style,      ) -> scrollable::Scrollbar {          match style { -            Scrollable::Default => self.active_horizontal(style), -            Scrollable::Custom(custom) => custom.hovered_horizontal(self), +            Scrollable::Default => self.hovered_horizontal(style, true), +            Scrollable::Custom(custom) => custom.dragging_horizontal(self),          }      }  } | 
