Merge pull request #1550 from bungoboingo/feat/multidirectional-scrolling

[Feature] Multidirectional scrolling
This commit is contained in:
Héctor Ramón 2023-01-09 19:23:35 +01:00 committed by GitHub
commit 7ccd87c36b
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
12 changed files with 1039 additions and 517 deletions

View file

@ -872,6 +872,15 @@ pub enum Scrollable {
Custom(Box<dyn scrollable::StyleSheet<Style = Theme>>),
}
impl Scrollable {
/// Creates a custom [`Scrollable`] theme.
pub fn custom<T: scrollable::StyleSheet<Style = Theme> + 'static>(
style: T,
) -> Self {
Self::Custom(Box::new(style))
}
}
impl scrollable::StyleSheet for Theme {
type Style = Scrollable;
@ -925,6 +934,30 @@ impl scrollable::StyleSheet for Theme {
Scrollable::Custom(custom) => custom.dragging(self),
}
}
fn active_horizontal(&self, style: &Self::Style) -> scrollable::Scrollbar {
match style {
Scrollable::Default => self.active(style),
Scrollable::Custom(custom) => custom.active_horizontal(self),
}
}
fn hovered_horizontal(&self, style: &Self::Style) -> scrollable::Scrollbar {
match style {
Scrollable::Default => self.hovered(style),
Scrollable::Custom(custom) => custom.hovered_horizontal(self),
}
}
fn dragging_horizontal(
&self,
style: &Self::Style,
) -> scrollable::Scrollbar {
match style {
Scrollable::Default => self.hovered_horizontal(style),
Scrollable::Custom(custom) => custom.dragging_horizontal(self),
}
}
}
/// The style of text.