diff options
| author | 2019-10-29 19:00:46 +0100 | |
|---|---|---|
| committer | 2019-10-29 19:00:46 +0100 | |
| commit | bd5d871eb6630bc8f987d72c771032f878fb91b6 (patch) | |
| tree | 528784f51a84abb0863590864a4af8f854d462e2 /native | |
| parent | 29588f604af66fb4911f791c0c402fccd30ba64b (diff) | |
| download | iced-bd5d871eb6630bc8f987d72c771032f878fb91b6.tar.gz iced-bd5d871eb6630bc8f987d72c771032f878fb91b6.tar.bz2 iced-bd5d871eb6630bc8f987d72c771032f878fb91b6.zip | |
Handle touchpad scroll events
Diffstat (limited to 'native')
| -rw-r--r-- | native/src/input/mouse.rs | 2 | ||||
| -rw-r--r-- | native/src/input/mouse/event.rs | 17 | ||||
| -rw-r--r-- | native/src/widget/scrollable.rs | 15 | 
3 files changed, 25 insertions, 9 deletions
| diff --git a/native/src/input/mouse.rs b/native/src/input/mouse.rs index d37f5b96..69dc6b4c 100644 --- a/native/src/input/mouse.rs +++ b/native/src/input/mouse.rs @@ -3,4 +3,4 @@ mod button;  mod event;  pub use button::Button; -pub use event::Event; +pub use event::{Event, ScrollDelta}; diff --git a/native/src/input/mouse/event.rs b/native/src/input/mouse/event.rs index 7b68208f..478f9b4d 100644 --- a/native/src/input/mouse/event.rs +++ b/native/src/input/mouse/event.rs @@ -34,11 +34,22 @@ pub enum Event {      },      /// The mouse wheel was scrolled. -    WheelScrolled { +    WheelScrolled { delta: ScrollDelta }, +} + +#[derive(Debug, Clone, Copy, PartialEq)] +pub enum ScrollDelta { +    Lines {          /// The number of horizontal lines scrolled -        delta_x: f32, +        x: f32,          /// The number of vertical lines scrolled -        delta_y: f32, +        y: f32, +    }, +    Pixels { +        /// The number of horizontal pixels scrolled +        x: f32, +        /// The number of vertical pixels scrolled +        y: f32,      },  } diff --git a/native/src/widget/scrollable.rs b/native/src/widget/scrollable.rs index 76d12124..8a82be4f 100644 --- a/native/src/widget/scrollable.rs +++ b/native/src/widget/scrollable.rs @@ -64,11 +64,16 @@ where          // TODO: Event capture. Nested scrollables should capture scroll events.          if is_mouse_over {              match event { -                Event::Mouse(mouse::Event::WheelScrolled { -                    delta_y, .. -                }) => { -                    // TODO: Configurable speed (?) -                    self.state.scroll(delta_y * 15.0, bounds, content_bounds); +                Event::Mouse(mouse::Event::WheelScrolled { delta }) => { +                    match delta { +                        mouse::ScrollDelta::Lines { y, .. } => { +                            // TODO: Configurable speed (?) +                            self.state.scroll(y * 15.0, bounds, content_bounds); +                        } +                        mouse::ScrollDelta::Pixels { y, .. } => { +                            self.state.scroll(y, bounds, content_bounds); +                        } +                    }                  }                  _ => {}              } | 
